3

セッションテキストファイルがいつ作成されるのか正確に知りたいのですが?それに対する簡単で表面的な答えは、おそらく、session_start()を使用するときでしょう。しかし、それはそうですか?phpスクリプトが終了するとき、それは最後までずっとでしょうか?

最後になるかもしれないと思うのは、ページの実行中にセッション変数を変更するたびにPHPがセッションファイルに書き込むことはないということです。たとえば$_SESSION['x'] = $_SESSION['x'] + 1;、ループのようなものを取得した場合、セッションファイルはループのすべての反復で変更されません。PHPスクリプトが実行された場合にのみ、PHPエンジンはファイルに変更を加えて、の最終値を格納します$_SESSION['x']

同じロジックを使用すると、session_startを呼び出すとすぐにPHPエンジンがファイルを作成する理由はわかりません。プロセスが遅れる可能性があります。

それに伴うのはこれです。

でセッションを開始しsession_start()、いくつかのセッション変数を設定し、それらを関数内でトスし、グローバルとして使用します。スクリプトの最後で、それらの設定を解除し、セッションを破棄します。その結果、セッションファイルはないと想定します。 CREATEDであるため、セッションテキストファイルの作成に関連するオーバーヘッドは発生しません。

これについてのあなたの洞察を聞きたいです。

私の目的は、ファイルI / Oを処理せずに、セッション変数を一時的なプレースホルダーとして厳密に使用してグローバル変数を左右に渡す可能性を探ることです。実際、次のページではこれらの変数はまったく必要ありません。

この場合、セッションは関数内でグローバルを使用するよりも速く証明できますか?

4

1 に答える 1

2

テストされ、すぐに作成されsession_startます。ただし、session_destroyそれも削除します。テスト済み:

mkdir sess && cd sess
vim main.php

session_save_path(dirname(__FILE__));
session_start();
sleep(5);
session_destroy();

php main.php &
ls # main.php   sess_rm4bcun6ear943mf61mdads190
fg # wait for script to end
ls # main.php

あなたの質問に対する答えがあります。グローバル変数の目的で使用するというあなたの考えは_SESSION良いものではありません..あなたはjuseuseを使うほうがよいでしょう$GLOBALS。そこにファイルIOはありません。

于 2012-09-20T14:27:43.403 に答える