4

作成中のアプリケーションでPHP を使用してfputcsv投票を記録しています。私のコードの保存部分は、おおよそ次のようになります。

$handle = fopen('votes.csv', 'a');
fputcsv($handle, $data);
fclose($handle);

これはテストで問題なく動作します。ただし、少し気になることがあります。本番環境にデプロイすると、多数のユーザーが同時にこのスクリプトにリクエストを送信する可能性があります。PHPがこれをどのように処理するかについて興味があります。

問題が発生する可能性があり、そのために投票を失う​​可能性はありますか? もしそうなら、それを防ぐために私は何ができますか?ソリューションは、単純にデータベースを使用するよりも複雑ですか? 最後に、多くのリクエストが同時に行われるこの状況をどのようにテストできますか? この種のものをテストするためにすでに存在するものはありますか?

4

1 に答える 1

4

ファイルへの書き込みは、同時ユーザーに問題を引き起こす可能性があります。代わりにデータベースに挿入すると、データベース自体にキューを処理させることができます。接続が不足した場合は、簡単に追跡でき、データベースの負荷を確認できます。

データベースへの挿入は、ファイルへの追加よりもリソースの負担が少なくなります。そうは言っても、どちらも有効にするにはかなりの負荷が必要ですが、データベースでは、同時実行ストレスの大部分を軽減するためにクエリキューが組み込まれています。

データベースに要求を送信すると、実際には処理のためにキューに入ります。PHPコードにタイムアウトがある場合にのみ実行に失敗します(基本的に、PHPはデータベースが応答するのを待つことを放棄するように指示されます-これはPHPとApacheの設定で制御できます)ので、素晴らしいビルトインがありますバッファ。

于 2012-08-02T14:45:52.183 に答える