Zend_Session-SaveHandler-DbTable.xml 4.0 KB

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