Zend_Session-SaveHandler-DbTable.xml 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 14978 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.session.savehandler.dbtable">
  5. <title>Zend_Session_SaveHandler_DbTable</title>
  6. <para>
  7. Das Basis Setup für Zend_Session_SaveHandler_DbTable muß zumindest vier Spalten haben,
  8. die wie folgt im Config Array/Zend_Config Objekt beschrieben werden:
  9. primary, ist der Primary-Key und standardmäßig nur die SessionID welche standardmäßig
  10. ein String der Länge 32 ist;
  11. modified, ist der Unix-Timestamp des Datums der letzten Änderung;
  12. lifetime, ist die Lebenszeit der Session (modified + lifetime > time());
  13. und data, sind die serialisierten Daten die in der Session gespeichert werden.
  14. </para>
  15. <example id="zend.session.savehandler.dbtable.basic">
  16. <title>Basis Setup</title>
  17. <programlisting role="SQL"><![CDATA[
  18. CREATE TABLE `session` (
  19. `id` char(32),
  20. `modified` int,
  21. `lifetime` int,
  22. `data` text,
  23. PRIMARY KEY (`id`)
  24. );
  25. ]]>
  26. </programlisting>
  27. <programlisting role="php"><![CDATA[
  28. // Datenbank Verbindung vorbereiten
  29. $db = Zend_Db::factory('Pdo_Mysql', array(
  30. 'host' =>'example.com',
  31. 'username' => 'dbuser',
  32. 'password' => '******',
  33. 'dbname' => 'dbname'
  34. ));
  35. // Entweder den Standardadapter Zend_Db_Table setzen
  36. // oder eine DB-Verbindung direkt an den save Handler $config übergeben
  37. Zend_Db_Table_Abstract::setDefaultAdapter($db);
  38. $config = array(
  39. 'name' => 'session',
  40. 'primary' => 'id',
  41. 'modifiedColumn' => 'modified',
  42. 'dataColumn' => 'data',
  43. 'lifetimeColumn' => 'lifetime'
  44. );
  45. // Erstellen der Zend_Session_SaveHandler_DbTable und
  46. // Setzen des save Handlers für Zend_Session
  47. Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
  48. // Session starten
  49. Zend_Session::start();
  50. // Jetzt kann Zend_Session wie sonst verwendet werden
  51. ]]>
  52. </programlisting>
  53. </example>
  54. <para>
  55. Man kann auch mehrere Spalten im Primarykey für
  56. Zend_Session_SaveHandler_DbTable verwenden.
  57. </para>
  58. <example id="zend.session.savehandler.dbtable.multi-column-key">
  59. <title>Mehr-Spalten Primary-Keys verwenden</title>
  60. <programlisting role="SQL"><![CDATA[
  61. CREATE TABLE `session` (
  62. `session_id` char(32) NOT NULL,
  63. `save_path` varchar(32) NOT NULL,
  64. `name` varchar(32) NOT NULL DEFAULT '',
  65. `modified` int,
  66. `lifetime` int,
  67. `session_data` text,
  68. PRIMARY KEY (`Session_ID`, `save_path`, `name`)
  69. );
  70. ]]>
  71. </programlisting>
  72. <programlisting role="php"><![CDATA[
  73. // Die DB Verbindung wie vorher einrichten
  74. // BEACHTE: Diese Config wird auch an Zend_Db_Table übergeben sodas
  75. // spezielles für die Tabelle genauso in die Config gegeben werden kann
  76. $config = array(
  77. 'name' => 'session', // Tabellenname von Zend_Db_Table
  78. 'primary' => array(
  79. 'session_id', // Die SessionID von PHP
  80. 'save_path', // session.save_path
  81. 'name', // Session Name
  82. ),
  83. 'primaryAssignment' => array(
  84. // Man muß dem Save-Handler mitteilen welche Spalten man als
  85. // Primary-Key verwendet. DIE REIHENFOLGE IST WICHITG
  86. 'sessionId', // Erste Spalte des Primary-Keys ist die sessionID
  87. 'sessionSavePath', // Zweite Spalte des Primary-Keys ist der save-path
  88. 'sessionName', // Dritte Spalte des Primary-Keys ist der Session Name
  89. ),
  90. 'modifiedColumn' => 'modified', // Zeit nach der die Session abläuft
  91. 'dataColumn' => 'session_data', // Serialisierte Daten
  92. 'lifetimeColumn' => 'lifetime', // Lebensende für einen speziellen Eintrag
  93. );
  94. // Zend_Session mitteilen das der Save Handler verwendet werden soll
  95. Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
  96. // Session starten
  97. Zend_Session::start();
  98. // Zend_Session wie normal verwenden
  99. ]]>
  100. </programlisting>
  101. </example>
  102. </sect1>
  103. <!--
  104. vim:se ts=4 sw=4 et:
  105. -->