2017-05-05 1 views
0

ウェブサイトを起動したときにデータベースに書き込むとします。同時に複数のユーザーがこのWebサイトにサインインした場合、それはデータベースにN回書き込みを試みることを意味しますか?N =ユーザーの数?接続が切断された場合にのみPHPにデータベースへの書き込みを強制する方法はありますか(他のすべてのユーザーが現在Webサイトにいない場合のみ書き込みます)。過剰な書き込みやデータベースへの要求を減らす方法として、あなたは何を提案しますか?PHPはセッションを個別にまたは共有メモリに保存しますか?

+0

サーバの設定によって異なりますが、PHPのデフォルト設定はセッションをデータベースではなくハードドライブ上のファイルに書き込むことです。 – rickdenhaan

+0

'接続が切断された場合にPHPにデータベースへの書き込みを強制する方法はありますか?(他のすべてのユーザーが現在Webサイトにいない場合のみ書き込みます)? - ほとんど疑いはありません。後で挿入する必要があるすべての保留中のデータをサーバーがどのように追跡するのか?後で挿入する必要のある1Mユーザーのデータがあるとします。私の意見では、データの挿入は直ちに行わなければなりません。 –

答えて

0

開始するには、PHPはセッションファイルをデフォルトにします。これらのファイルは、最初のsession_start();ブラウザ(別称ユーザ)で作成されます。その後、ユーザがブラウザを閉じるまで、同じファイルがサブシーケンスsession_start();のために使用されます。しかし、セッションファイルは、クライアントがPHPで定義された有効期限を過ぎてブラウザを閉じるときに、サーバからクリアされません。

すべてのセッションが期限切れになった(すべてのセッションが期限切れになってからクライアントが接続されていない)かどうかを判断するには、PHPガベージコレクタがまだ見つけていないセッションファイルをクリアし、セッションファイルがディレクトリに存在しない場合は、サイトにアクティブなユーザーがいないとみなすことができます。

メモリ内モジュールを使用している場合(例:php-redis)、セッションのチェックに必要なルートをファイルから、セッションのチェックに使用されているハンドラに変更する必要があります。

関連する問題