ホームページ >バックエンド開発 >PHPチュートリアル >PHP はデータベースを使用してセッションを保存します_PHP チュートリアル
PHP はデフォルトでセッションをファイルの形式で保存します。これはファイルスペースのオーバーヘッドが非常に小さい Windows でのみ使用できますが、uinx または liux でファイルシステムを使用する場合は、次のようにファイルスペースのオーバーヘッドが発生します。システムは非常に大規模ですが、多数のユーザーが常にセッションを使用する必要があるため、サーバー全体にパフォーマンスの問題が発生します。 、セッションの一貫性を維持できないため、データベース方式を使用してセッションを保存する必要があります。この方法では、同時に使用されるサーバーの数に関係なく、セッションを 1 つのデータベース サーバーに保存するだけで済みます。セッションは完全に保存されます。実装方法の詳細については、引き続きお読みください。 デフォルトでは、PHP セッションはファイルを使用して保存されます。PHP 設定ファイル php.ini に、session.save_handler="files" のような行が表示されます。これは、セッションの保存にファイルが使用されることを意味します。データベースを使用して保存したい場合は、サポート モードに変更し、名前を session.save_handler="use" に変更する必要があります。ただし、これは、セッションの保存にファイルを使用しないことを意味するだけです。データベースを作成し、データベーステーブルを作成します。 $con =mysql_connection("127.0.0.1","user" , "pass"); 関数 close() function read($id) } * 種類のガベージ コレクション ルーチンを実装します。 * function gc($maxlifetime) ?>session_user_start.php として保存します。
データベースとデータベースのテーブル構造を確立するには、PHP と MySQL の組み合わせが最適なので、名前を変更することもできます。同時に、MySQL にはトランザクション機能がないため、他のデータベースよりも高速ですが、セッション ファイルの保存にはトランザクション処理が必要ないため、より適切に実行することにしました。
データベースの作成 , CREATE DATABASE セッション; テーブル構造の作成 CREATE TABLE session( id CHAR(30) NOT NULL , user CHAR(30) ,PARMIRY BY (id) );
php ファイルの書き込み
http:/ /www.knowsky.com
mysql_select_db("session");
function open($save_path, $session_name)
{
return(true);
}
{
return(true);
}
{
if($result = mysql_query("SELECT * FROM session WHERE id=$id"))
{
if($row = mysql_felth_row($result ))
{ return $row[ 「データ」] }
。
関数 write($id, $sess_data)
{
if($result = mysql_query("UPDATE session SET data=$sess_data WHERE id=$id"))
falseを返す;
}
関数 destroy($id)
{
if($result = mysql_query("DELETE * FROM session id=$id"))
}
。
}
/**********************************************
{
return true;
}
session_set_save_handler("open", "close", "read", "write", "destroy", "gc");
session_start();
// 通常のセッションの使用に進みます
これで作業は完了しました。セッションを使用する必要がある場合は、session_user_start.php を変更します。このファイルをファイルの最初の行に含める必要があることに注意してください。その後、ファイルのセッションと同じように使用できます。
この記事は急いで書いたものです、何か間違っている点がありましたら、貴重なご意見をお聞かせください。修正は大歓迎です。
aspx">http://blog.csdn.net/eoe2005/archive/2007/02/20/1512131.aspx