svn: /phpdoc/ja/trunk/reference/session/functions/ session-set-save-handler.xml

From: Date: Sat, 25 Feb 2012 01:44:57 +0000
Subject: svn: /phpdoc/ja/trunk/reference/session/functions/ session-set-save-handler.xml
Groups: php.doc.ja 
Request: Send a blank email to doc-ja+get-3301@lists.php.net to get a copy of this message
takagi Sat, 25 Feb 2012 01:44:57 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=323484 Log: sync with en. Changed paths: U phpdoc/ja/trunk/reference/session/functions/session-set-save-handler.xml Modified: phpdoc/ja/trunk/reference/session/functions/session-set-save-handler.xml =================================================================== --- phpdoc/ja/trunk/reference/session/functions/session-set-save-handler.xml 2012-02-25 00:54:18 UTC (rev 323483) +++ phpdoc/ja/trunk/reference/session/functions/session-set-save-handler.xml 2012-02-25 01:44:57 UTC (rev 323484) @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- $Revision$ --> -<!-- EN-Revision: 323466 Maintainer: takagi Status: ready --> +<!-- EN-Revision: 323483 Maintainer: takagi Status: ready --> <!-- CREDITS: hirokawa,shimooka --> <refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.session-set-save-handler"> <refnamediv> @@ -178,147 +178,153 @@ &reftitle.examples; <para> <example> - <title><function>session_set_save_handler</function> の例</title> - <para> - 以下の例では、デフォルトの保存 <parameter>files</parameter> に似た - ファイルベースのセッション保存を行います。この例は、PHP がサポート - する任意のデータベースエンジンを用いてデータベースへの保存を行う - ように容易に拡張可能です。 - </para> + <title> + <function>session_set_save_handler</function> で <classname>SessionHandlerInterface</classname> を使う例 + </title> <programlisting role="php"> <![CDATA[ <?php -function open($save_path, $session_name) +class MySessionHandler implements SessionHandlerInterface { - global $sess_save_path; + private $savePath; - $sess_save_path = $save_path; - return(true); -} + public function open($savePath, $sessionName) + { + $this->savePath = $savePath; -function close() -{ - return(true); -} + return true; + } -function read($id) -{ - global $sess_save_path; + public function close() + { + return true; + } - $sess_file = "$sess_save_path/sess_$id"; - return (string) @file_get_contents($sess_file); -} + public function read($id) + { + $file = "$this->savePath/sess_$id"; + return (string)@file_get_contents($file); + } -function write($id, $sess_data) -{ - global $sess_save_path; + public function write($id, $data) + { + $file = "$this->savePath/sess_$id"; + if ($fp = @fopen($file, "w")) { + $return = fwrite($fp, $data); + fclose($fp); + return $return; + } else { + return false; + } + } - $sess_file = "$sess_save_path/sess_$id"; - if ($fp = @fopen($sess_file, "w")) { - $return = fwrite($fp, $sess_data); - fclose($fp); - return $return; - } else { - return(false); - } + public function destroy($id) + { + $file = "$this->savePath/sess_$id"; + if (file_exists($file)) { + unlink($file); + } -} + return true; + } -function destroy($id) -{ - global $sess_save_path; + public function gc($maxlifetime) + { + foreach (glob("$this->savePath/sess_*") as $file) { + if (filemtime($file) + $maxlifetime < time() && file_exists($file)) { + unlink($file); + } + } - $sess_file = "$sess_save_path/sess_$id"; - return(@unlink($sess_file)); -} - -function gc($maxlifetime) -{ - global $sess_save_path; - - foreach (glob("$sess_save_path/sess_*") as $filename) { - if (filemtime($filename) + $maxlifetime < time()) { - @unlink($filename); + return true; } - } - return true; } -session_set_save_handler("open", "close", "read", "write", "destroy", "gc"); - +$handler = new MySessionHandler(); +session_set_save_handler($handler); session_start(); -// セッションを通常通り使用します。 - -?> +// $_SESSION への値の設定や格納されている値の取得を進めます ]]> </programlisting> </example> <example> - <title> - <function>session_set_save_handler</function> で - <classname>SessionHandler</classname> を使う例 - </title> + <title><function>session_set_save_handler</function> の例</title> + <para> + 以下の例では、デフォルトの保存 <parameter>files</parameter> に似た + ファイルベースのセッション保存を行います。この例は、PHP がサポート + する任意のデータベースエンジンを用いてデータベースへの保存を行う + ように容易に拡張可能です。 + </para> <programlisting role="php"> <![CDATA[ <?php -class MySessionHandler extends SessionHandler { - public function open($save_path, $sessionid) - { +function open($savePath, $sessionName) +{ global $sess_save_path; - $sess_save_path = $save_path; - return(true); - } - public function close() - { + $sess_save_path = $savePath; + return true; - } - public function read($sessionid) - { +} + +function close() +{ + return true; +} + +function read($id) +{ global $sess_save_path; $sess_file = "$sess_save_path/sess_$id"; - return (string) @file_get_contents($sess_file); - } - public function write($sessionid, $sessiondata) - { + + return (string)@file_get_contents($sess_file); +} + +function write($id, $data) +{ global $sess_save_path; $sess_file = "$sess_save_path/sess_$id"; if ($fp = @fopen($sess_file, "w")) { - $return = fwrite($fp, $sess_data); - fclose($fp); - return $return; + $return = fwrite($fp, $data); + fclose($fp); + + return $return; } else { - return(false); + return false; } - } - public function destroy($sessionid) - { +} + +function destroy($id) +{ global $sess_save_path; - $sess_file = "$sess_save_path/sess_$id"; - return(@unlink($sess_file)); - } - public function gc($maxlifetime) - { + $file = "$sess_save_path/sess_$id"; + if (file_exists($file)) { + unlink($file); + } + return true; +} + +function gc($maxlifetime) +{ global $sess_save_path; - foreach (glob("$sess_save_path/sess_*") as $filename) { - if (filemtime($filename) + $maxlifetime < time()) { - @unlink($filename); - } + foreach (glob("$sess_save_path/sess_*") as $file) { + if (filemtime($file) + $maxlifetime < time() && file_exists($file)) { + unlink($file); + } } + return true; - } } -$handler = new MySessionHandler(); -session_set_save_handler($handler); +session_set_save_handler("open", "close", "read", "write", "destroy", "gc"); session_start(); -?> +// $_SESSION への値の設定や格納されている値の取得を進めます ]]> </programlisting> </example>

« previous php.doc.ja (#3301) next »