ホームページ >バックエンド開発 >PHPチュートリアル >PHP開発におけるセッションの高度な応用
1、セッション一時ファイル
サーバーでは、すべてのユーザーセッションが一時ディレクトリに保存されると、サーバーのセキュリティと効率が低下します。サーバーに保存されているサイトを開くと非常に時間がかかります。
PHP 関数 session_save_path() 関数を使用してセッション一時ファイルを保存すると、一時ファイルの保存によって引き起こされるサーバー効率の低下やサイトを開くのが遅くなるという問題を軽減できます。
サンプルコードは次のとおりです:
<?php $path ="./tmp/"; //设置session存储的路径 session_save_path($path); session_start(); $_SESSION['userName']=true; ?>
注意
session_save_path() は session_start() の前に実行する必要があります。
2、セッションキャッシュ
セッションキャッシュとは、WebページのコンテンツをIEクライアントのインターネット一時ファイルフォルダーに一時的に保存するもので、キャッシュ時間を設定することができます。
セッション キャッシュは session_cache_limiter() 関数を使用します。その構文は次のとおりです:
string session_cache_limiter([string cache_limiter]);
パラメータ cache_limiter はパブリックまたはプライベートです。 Colleagues セッションはサーバー側ではなく、クライアント側にあります。サーバーには表示されません。
キャッシュ時間を設定するには、関数 session_cache_expire() を使用します。 構文は次のとおりです:
int session_cache_expire([int new_cahche_expire]); パラメータ new_cahche_expire は、分単位のセッション キャッシュ時間番号です。
注:
これら 2 つのセッション関数は session_start() 関数の前に実行する必要があります
<?php session_cache_limiter("private"); $cache_limit =session_cache_limiter(); //开启客户端缓存 echo "缓存限制为:".$cache_limit."\n"; session_cache_expire(30); $cache_expire = session_cache_expire(); //设定客户端缓存时间 echo "客户端缓存时间为:".$cache_expire."分钟\n"; session_start(); ?>実行結果は次のとおりです:
3、セッション データベース ストレージ php のセッション データベース ストレージは主に session_set_save_handler() 関数を通じて実装されます。 具体的な構文は次のとおりです:
bool session_set_save_handler(string open, string close, string read, string write, string destroy, string gc);
オブジェクト指向プログラミングを学習すると、次の 6 つのパラメータ (関数) に分かれます。 、誰もがより明確に理解できるようになります。
(1) session_open() 関数をカプセル化します。コードは次のとおりです。
function _session_open($save_path,$session_name){global $handle;$handle =mysql_connect('localhost','root','root')or die('数据库连接失败!');mysql_select_db('db_database11',$handle)or die('数据库不存在');return(true);}(2) session_close() 関数をカプセル化します。コードは次のとおりです。
function _session_close(){global $handle;mysql_close($handle);return(true);}(3) session_read() 関数をカプセル化します。関数内の現在時刻の UNIX 時間 クリックすると、$key に基づいてセッション名刺とコンテンツが検索されます。コードは次のとおりです:
function _session_read($key){golbal $handle; //全局变量$handle 连接数据库$time =time(); //设定当前时间$sql ="select session_data from tb_session where session_key = '$key' and session_time>'$time'";$result =mysql_query($ssql,$handle);$row =mysql_fetch_array($result);if($row){return($row['session_data']);}else{return(false);}}(4) session_write() 関数をカプセル化します。この関数はセッションの有効期限を設定し、クエリ結果が空の場合はセッションの名前と内容を検索します。次に、session_id、session_name、および有効期限に基づいて、ページ内のセッションをデータベースに挿入します。クエリ結果が空でない場合は、$key に基づいてデータベース内のセッション ストレージ情報を変更します。コードは次のとおりです。
function _session_write($key,$data){global $handle;$time = 60*60;$lapse_time =time()+$time; //得到UNIX时间戳$sql = "select session_data from tb_session where session_key ='$key' and session_time>$lapse_time";$result =mysql_query($sql,$handle);if(mysql_num_rows($result)==0){ //没有结果$sql ="insert into tb_session values('$key','$data',$lapse_time)";$result =mysql_query($sql,$handle);}else{$sql ="update tb_session set session_key='$key',session_data ='$data',session_time =$lapse_time where session_key ='$key'";$result =mysql_query($sql,$handle);}return($result);}(5) は session_destroy() をカプセル化し、$key に基づいてデータベース内の Sessin を削除します。 コードは次のとおりです。
function _session_destroy(){global $handle;$sql ="delete from tb_session where session_key ='$key'";$result =mysql_query($sql,$handle);}(6) は session_gc() をカプセル化し、期限切れのセッションを削除します。セッションの有効期限に関するサンプル コードは次のとおりです。
functin _session_gc($expiry_time){global $handle;$sql ="delete from tb_session where session_expiry_time<$expiry_time";$result =mysql_query($sql,$handle);return($result);}特定のコードの実行は行いません。オブジェクト指向プログラミングの学習が完了したら、皆さんにデモします。