最近、データベースを使用してユーザーの PHP セッションを管理するように切り替えました。私が実装したデータベース セッション ハンドラは、ほとんどの場合、これと同じです。
そうは言っても、私はいくつかの奇妙な行動に出くわしました。1 回のページ読み込みで、PHP セッション ID が数回変更されます。たとえば、以下の出力は、1 つのページの読み込み中に、my _write
for mysession_set_save_handler()
呼び出しで file_put_contents を使用してファイルに書き込まれました。
私はコードを検索しましたが、session_regenerate_id()
呼び出されたこともありませんsession_id(<new_id>)
。さらに、私の php.ini には session.auto_start が に設定されていOff
ます。基本的に、上記の事実を考慮して、1回のページ読み込みでセッションIDがどのように変化するかはわかりません。
私がそれに気付いた理由はREPLACE INTO
、リンク先の Web ページからの SQL ステートメントがデータベースに 8 行ほどを作成しているためです (余分な異なるセッション ID ごとに 1 行)。ご覧のとおり、そのうちの 1 つが 4 回ほど繰り返されます。これは、データベースに入れられたときにデータが関連付けられている唯一のセッション ID です。
f951tbvjkc8c5mv25aakfhoq86
f951tbvjkc8c5mv25aakfhoq86
f951tbvjkc8c5mv25aakfhoq86
f951tbvjkc8c5mv25aakfhoq86
eodjh2vhuo5ni1b7ia5ro6itf7
bada69955ld96fks0g057pp7i2
4n4c00ddlolb9k2t3uh2h66v37
lsqhhmfsund3bp3ocotcrj0l05
qvfe3qp6nupokcncp8jja8tsk0
4qfp9m3knabs88t6n1fkjo8oq6
g52du9v2fcsak27tjo7519q7j0
ロードしているページには、独自のサーバーへの AJAX 要求が含まれていることに注意してください。さらに、この動作は、サイトのすべてのページ読み込みで発生するわけではありません。これまでのところ、いくつかの異なる AJAX 要求を行うこの 1 つのページに絞り込みました。
考え?
更新: カスタム ドメインのワイルドカードとして、サーバーに次の vhost があります。コメントアウトされた行は、何が原因だと思います。それをコメントアウトすると、うまくいくようです。そこにあると、奇妙な動作が発生するようです。
<VirtualHost *:80>
DocumentRoot "/opt/local/www/mysite.com"
ServerName default
ServerAlias *
ErrorLog "/opt/local/apache2/logs/mysite.com-error.log"
CustomLog "/opt/local/apache2/logs/mysite.com-access.log" common
<Directory "/opt/local/www/mysite.com">
AllowOverride All
php_value session.save_path "/opt/local/www/mysite.com/sessions"
#php_value session.cookie_domain "mysite.local"
php_value auto_prepend_file "/opt/local/www/mysite.com/core.php"
</Directory>
</VirtualHost>