これは、それが全体のウェブサイト全体にロードされているように私のinit.php
が見えるものです:PHPセッションを効率的に処理するには?
$suid = 0;
session_set_cookie_params(60, '/', '.' . $_SERVER['HTTP_HOST'], true);
session_save_path(getcwd() . '/a/');
if (!isset($_SESSION['id'])) {
session_start(['cookie_lifetime' => 60]);
$_SESSION['id'] = session_id();
$_SESSION['start'] = date('d_m_Y_H_i');
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
} elseif (isset($_SESSION['uid'])) {
$suid = $_SESSION['uid'];
}
私は現在、PHPのセッションをテストしていますので、私はちょうど寿命として60秒置きます。
誰もまだドメインを知っていないのでセッションが作成されたのはなぜかと思っていたので、ip
を追加しました。私はそれを見て、これを見つけた:
だから、Googleのクローラボットでした。より多くの検索エンジンとボットがあるので、私はこれらのクロールをセッションファイルに保存し、ウェブスペースにそれを埋めることはしません。
だから私の質問は以下のとおりです。
1)テスト生涯価値(60秒)を超える場合でも、セッションファイルは、カスタムディレクトリに残っています。私はこれを読んだのは、私がカスタムディレクトリを設定したからです。これは本当ですか?
2)未使用/期限切れのセッションファイルをすべて削除する効率的な方法はありますか?私は$_SESSION['last_activity']
にタイムスタンプをつけて、自分のカスタムディレクトリにcronjobを見せて、セッションファイルのデータを取得し、それを削除する期限切れのセッションを計算する必要がありますか?
3)$_SERVER['HTTP_HOST']
内の文字列 "bot"を探しているボットクローラで不要なセッションを保存しないでください。そうでないと "非人間的な訪問者" /クローラを識別する良い方法がありますか?
トップに私のコードに改善や提案をいただきありがとうございます。私はちょうどsession_start()
が私がphp-fpm-slow
-logsから告げることができるところまで頻繁に呼び出されたので、以前はInternal Server Error
の一部を発生させました。
うわー。その詳細な答えをありがとう!私はそれがすぐには起こらないことを知らなかった。私はまだ自分のカスタムディレクトリを追跡していませんでしたが、削除されていないようです。ですから、 'filemtime()'を使って最後に修正されたファイルの時刻を検出することをお勧めしますか?ログインしていないユーザーとカスタムディレクトリを使用してセッションを設定する方法:同じサーバー上の2つの異なるドメインからajaxリクエストを送信し、セッション変数を使用してセッション変数に保存した言語コードを取得します。登録フォームの中にも(3ステップ)。ログインしたユーザーなしでセッションを使用しないようにするには、それを通常のCookieに置き換える必要がありますか? – AlexioVay
この2番目のコメントを残して申し訳ありません、それを明確にしたかっただけです。ajaxとカスタムディレクトリの問題は、そのドメインを参照する正しいセッションを検出することです。私はこのために別の方法を見つけることができませんでした。 – AlexioVay
はい、シンプルなクッキーは、単純な言語識別子ではうまくありません。セッションはプライベートデータと認証のためのもので、表示言語を選択する必要はありません。 :) – Narf