Zend_Session-SaveHandler-DbTable.xml 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <!-- EN-Revision: 13170 -->
  2. <sect1 id="zend.session.savehandler.dbtable">
  3. <title>Zend_Session_SaveHandler_DbTable</title>
  4. <para>Le paramétrage basique pour <classname>Zend_Session_SaveHandler_DbTable</classname> doit contenir au moins quatre
  5. colonnes, décrites dans une configuration de type <code>array</code> ou objet <classname>Zend_Config</classname> : "primary"
  6. qui est la clé primaire et reçoit par défaut l'ID de session dont le format est par défaut une chaîne de 32
  7. caractères ; "modifiedColumn" qui est le timestamp Unix de la date de dernière modification ; "lifetimeColumn" qui
  8. est la durée de vie de la session ("modified" + "lifetime" doit être supérieur à "time()") ; et "dataColumn" qui est
  9. la donnée sérialisée stockée en session.</para>
  10. <example id="zend.session.savehandler.dbtable.basic">
  11. <title>Paramétrage basique</title>
  12. <programlisting role="SQL"><![CDATA[
  13. CREATE TABLE `session` (
  14. `id` char(32),
  15. `modified` int,
  16. `lifetime` int,
  17. `data` text,
  18. PRIMARY KEY (`id`)
  19. );
  20. ]]></programlisting>
  21. <programlisting role="php"><![CDATA[
  22. // Préparation de l'adaptateur de connexion à la base de données
  23. $db = Zend_Db::factory('Pdo_Mysql', array(
  24. 'host' =>'example.com',
  25. 'username' => 'dbuser',
  26. 'password' => '******',
  27. 'dbname' => 'dbname'
  28. ));
  29. // Vous pouvez soit passer l'adaptateur par défaut à Zend_Db_Table
  30. // ou l'objet $db dans votre tableau $config
  31. Zend_Db_Table_Abstract::setDefaultAdapter($db);
  32. $config = array(
  33. 'name' => 'session',
  34. 'primary' => 'id',
  35. 'modifiedColumn' => 'modified',
  36. 'dataColumn' => 'data',
  37. 'lifetimeColumn' => 'lifetime'
  38. );
  39. // Création de votre Zend_Session_SaveHandler_DbTable
  40. // et paramétrage du gestionnaire de sauvegarde à Zend_Session
  41. Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
  42. // Démarrage de la session
  43. Zend_Session::start();
  44. // Vous pouvez maintenant utiliser Zend_Session comme avant
  45. ]]></programlisting>
  46. </example>
  47. <para>Vous pouvez aussi utiliser des colonnes multiples pour votre clé primaire de
  48. <classname>Zend_Session_SaveHandler_DbTable</classname>.</para>
  49. <example id="zend.session.savehandler.dbtable.multi-column-key">
  50. <title>Utilisation d'une clé primaire multi-colonnes</title>
  51. <programlisting role="SQL"><![CDATA[
  52. CREATE TABLE `session` (
  53. `session_id` char(32) NOT NULL,
  54. `save_path` varchar(32) NOT NULL,
  55. `name` varchar(32) NOT NULL DEFAULT '',
  56. `modified` int,
  57. `lifetime` int,
  58. `session_data` text,
  59. PRIMARY KEY (`Session_ID`, `save_path`, `name`)
  60. );
  61. ]]></programlisting>
  62. <programlisting role="php"><![CDATA[
  63. // Préparation de l'adaptateur de connexion à la base de données comme ci-dessus
  64. // NOTE : cette configuration est fournie à Zend_Db_Table donc tout élément spécifique à la table peut y être ajouté
  65. $config = array(
  66. 'name' => 'session',
  67. // Nom de la table comme pour Zend_Db_Table
  68. 'primary' => array(
  69. 'session_id',
  70. // l'ID de session fourni par PHP
  71. 'save_path',
  72. // session.save_path
  73. 'name',
  74. // session name
  75. ),
  76. 'primaryAssignment' => array(
  77. // vous devez avertir le gestionnaire de sauvegarde quelles colonnes
  78. // vous utilisez en tant que clé primaire. L'ORDRE EST IMPORTANT.
  79. 'sessionId',
  80. // - la première colonne de la clé primaire est l'ID de session
  81. 'sessionSavePath',
  82. // - la seconde colonne de la clé primaire est le "save path"
  83. 'sessionName',
  84. // - la troisième colonne de la clé primaire est le "session name"
  85. ),
  86. 'modifiedColumn' => 'modified',
  87. // date de la dernière modification
  88. 'dataColumn' => 'session_data',
  89. // donnée sérialisée
  90. 'lifetimeColumn' => 'lifetime',
  91. // durée de vie de l'enregistrement
  92. );
  93. // Informez Zend_Session d'utiliser votre gestionnaire de sauvegarde
  94. Zend_Session::setSaveHandler(
  95. new Zend_Session_SaveHandler_DbTable($config)
  96. );
  97. // Démarrage de la session
  98. Zend_Session::start();
  99. // Utilisez Zend_Session normalement
  100. ]]></programlisting>
  101. </example>
  102. </sect1>