ホームページ  >  記事  >  バックエンド開発  >  PHPでのセッション一時ファイルとキャッシュ命令

PHPでのセッション一時ファイルとキャッシュ命令

伊谢尔伦
伊谢尔伦オリジナル
2017-04-28 16:44:054012ブラウズ

1. セッション一時ファイル

サーバーでは、すべてのユーザーセッションが一時ディレクトリに保存されると、サーバーのセキュリティと効率が低下し、サーバーに保存されているサイトを開くのが非常に遅くなります。 。 Windows では、PHP のデフォルトのセッション サーバー ファイルは C:WINDOWSTemp に保存されます。同時アクセスが多い場合、または作成されるセッションが多すぎる場合、同じディレクトリ内に sess_xxxxxx のような多数のファイルが存在します。パフォーマンスの低下を引き起こし、攻撃によるファイル システム エラーにつながる可能性があります。この状況に対しては、PHP 自体がより良い解決策を提供します。 PHP では、関数 session_save_path() を使用すると、この問題を解決できます。

PHP 関数 session_save_path() を使用してセッション一時ファイルを保存すると、一時ファイルの保存によって引き起こされるサーバー効率の低下とサイトを開くのが遅くなる問題を軽減できます。コード例は次のとおりです。

<?php
$path = &#39;./tmp/&#39;;         //设置 session 存储路径
session_save_path($path);
session_start();
$_SESSION[&#39;username&#39;] = true;
?>

注: session_save_path()関数は session_start () 関数に含める必要があります。関数が呼び出される前に実行されます。

2. セッションキャッシュ

セッションキャッシュは、Webページのコンテンツをクライアントのインターネット一時ファイルフォルダーに一時的に保存するもので、キャッシュ時間を設定できます。初めて Web ページを閲覧すると、ページの内容の一部が一定期間クライアントの一時フォルダーに一時的に保存され、次回このページにアクセスしたときに直接読むことができます。コンテンツをキャッシュに保存することで、Web サイトの閲覧効率が向上します。

セッションキャッシュの役割

(1)データベースアクセス頻度を減らす。アプリケーションは明らかに、データベースからデータを取得するよりも高速にキャッシュから永続オブジェクトを読み取ることができます。

(2) キャッシュ内の永続オブジェクト間に循環関係がある場合、Session はオブジェクト グラフへのアクセスの無限ループや、無限ループによって引き起こされる JVM スタック オーバーフローが発生しないことを保証します。

(3) データベース内の関連レコードがキャッシュ内のレコードと同期されていることを確認します。セッションがキャッシュをクリアすると、セッション キャッシュ内のオブジェクトがデータベース内の対応するレコードと矛盾していることが判明した場合は、ダーティ データ チェック (ダーティ チェック) が自動的に実行され、データベースはその要求に従って更新されます。最新のオブジェクト属性。

セッション キャッシュは session_cache_limiter() 関数を使用します。その構文形式は次のとおりです:

session_cache_limiter(cache_limiter)

パラメーター cache_limiter はパブリックまたはプライベートです。 同時に、セッションキャッシュはサーバー側でのキャッシュを意味するのではなく、サーバー側でのキャッシュ時間設定は表示されません。 構文形式は次のとおりです。

session_cache_expire(new_cache_expire);

パラメータcache_expireはセッションがキャッシュされた時間です。

注: これら 2 つのセッション キャッシュ関数は session_start() 関数の前に呼び出す必要があります。そうしないとエラーが発生します。

以下はセッション キャッシュ ページ プロセスの例です。実装されたコードは次のとおりです。

以上がPHPでのセッション一時ファイルとキャッシュ命令の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。