ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHP チュートリアルでデータベースを使用してセッションを保存する方法
PHP はデフォルトでセッションをファイルの形式で保存します。これはファイルスペースのオーバーヘッドが非常に小さい Windows でのみ使用できますが、そのとき uinx または liux でファイルシステムを使用すると、ファイルはしかし、このようなファイル システムのスペース オーバーヘッドは非常に大きく、多数のユーザーが常にセッション ファイルを作成するため、サーバー全体にパフォーマンスの問題が発生します。
一方、サーバーがクラスター方式を採用している場合、セッションの一貫性が維持できないため、このように、サーバーが何台使用されても、セッションを保存するためにデータベースを使用する準備ができています。同時に、セッション全体をデータベース サーバーに保存するだけで済みます。これを実装する方法の詳細については、以下をお読みください。
PHP はデフォルトでファイルを使用してセッションを保存します。PHP 設定ファイル PHP.ini に session.save_handler="files" という行があります。これは、データベースを使用する場合にセッションを保存することを意味します。保存するには、ユーザー モードに変更し、名前を session.save_handler="use" に変更する必要があります。ただし、これは、セッションの保存にファイルを使用しないことを意味するだけであり、データベースを作成するためにデータベースとテーブルも選択する必要があります。 。
データベースとデータベースのテーブル構造を確立するには、PHP が使用できる任意のデータベースを使用できます。PHP と mysql の組み合わせが最適であるため、例では mysql を使用します。 mysqlにはトランザクション機能がないため、他のデータベースよりも高速ですが、セッションの保存にはトランザクション処理が必要ないため、こちらの方が良いと思います。
データベースの作成、データベース 'セッション'; テーブル構造の作成 create table 'session'( id char(30) not null , 'user 'char(30), data char(3000) ,parmiry by ('id') ) ;
PHP セッションを保存し、PHP ファイルを書き込みます
<ol class="dp-xml"><li class="alt"> <span class="tag"><</span> ?PHP </li><li><span>$</span><span class="attribute">con</span><span> =</span><span class="attribute-value">mysql_connection</span><span>("127.0.0.1"<br />,"user" , "pass"); </span></li><li class="alt"><span>mysql_select_db("session"); </span></li><li><span>function open($save_path, $session_name) </span></li><li class="alt"><span>{ </span></li><li><span>return(true); </span></li><li class="alt"><span>} </span></li><li><span>function close() </span></li><li class="alt"><span>{ </span></li><li><span>return(true); </span></li><li class="alt"><span>} </span></li><li><span>function read($id) </span></li><li class="alt"><span>{ </span></li><li><span>if($</span><span class="attribute">result</span><span> = </span><span class="attribute-value">mysql_query</span><span>("select <br />* from session where </span><span class="attribute">id</span><span>=</span><span class="attribute-value">'$id'</span><span>")) </span></li><li class="alt"><span>{ </span></li><li><span>if($</span><span class="attribute">row</span><span> = </span><span class="attribute-value">mysql_felth_row</span><span>($result )) </span></li><li class="alt"><span>{ return $row["data"]; } </span></li><li><span>} </span></li><li class="alt"><span>else </span></li><li><span>{ </span></li><li class="alt"><span>return ""; </span></li><li><span>} </span></li><li class="alt"><span>} </span></li><li><span>function write($id, $sess_data) </span></li><li class="alt"><span>{ </span></li><li><span>if($</span><span class="attribute">result</span><span> = </span><span class="attribute-value">mysql_query</span><span>("update session <br />set </span><span class="attribute">data</span><span>=</span><span class="attribute-value">'$sess_data'</span><span> where </span><span class="attribute">id</span><span>=</span><span class="attribute-value">'$id'</span><span>")) </span></li><li class="alt"><span>{ </span></li><li><span>return true; </span></li><li class="alt"><span>} </span></li><li><span>else </span></li><li class="alt"><span>{ </span></li><li><span>return false; </span></li><li class="alt"><span>} </span></li><li><span>} </span></li><li class="alt"><span>function destroy($id) </span></li><li><span>{ </span></li><li class="alt"><span>if($</span><span class="attribute">result</span><span> = </span><span class="attribute-value">mysql_query</span><span>("delete * <br />from session where </span><span class="attribute">id</span><span>=</span><span class="attribute-value">'$id'</span><span>")) </span></li><li><span>{ </span></li><li class="alt"><span>return true; </span></li><li><span>} </span></li><li class="alt"><span>else </span></li><li><span>{ </span></li><li class="alt"><span>return false; </span></li><li><span>} </span></li><li class="alt"><span>} </span></li><li><span>function gc($maxlifetime) </span></li><li class="alt"><span>{ </span></li><li><span>return true; </span></li><li class="alt"><span>} </span></li><li><span>session_set_save_handler("open", <br />"close", "read", "write", "destroy", "gc"); </span></li><li class="alt"><span>session_start(); </span></li><li><span>// proceed to use sessions normally </span></li><li class="alt"><span class="tag">?></span><span> </span> </li></ol>
session_user_start.PHP として保存します。
これでセッションを保存する PHP 作業が完了しました。セッションを使用する必要がある限り、session_user_start.PHP を保存します。このファイルをファイルの最初の行に含める必要があることに注意してください。その後、ファイルのセッションを使用する場合と同じように使用できます。