48 個の cURL マルチハンドルを作成する PHP スクリプトをテストしようとしています。それぞれが約 1500 のリクエストを保持し、すべて並行して実行されます。すべてのリクエストが実際に送信されていることを確認しようとしています。そのために、サーバーにリクエストを記録しています。これが私のスクリプトでリクエストを行う私のdump.phpであり、リクエストをファイルに記録します:
<?php
ob_start();
echo $_SERVER["REQUEST_URI"];
$dump = ob_get_clean();
$log = "dump.txt";
$fh = fopen($log, 'a') or die("can't open file");
fwrite($fh, $dump . "\r\n\r\n");
fclose($fh);
echo "Dump Completed";
?>
ただし、クアッド コア PC が 10 秒ごとに約 1500 のレートでこれらの要求を起動できるというわずかな問題があり、ファイルを同時に開こうとするため、サーバーが過負荷になる可能性があります。各リクエストの送信間に 0.1 秒の遅延を設定しましたが、私のサーバーは、次のリクエストが到着する前にファイルを開いたり、テキストをダンプしたり、閉じたりすることはまだできないと思います。その結果、PHP ファイルには約 72k のリクエストが送信されたことが示されていますが、私のサーバーでは約 14k しか受信されていません。これは、PHP プログラムが PC またはポート システムに過負荷をかけていることが原因である可能性があり、一部のリクエストが正常に送信されなかったか、サーバーが 1 秒間に 150 リクエストを処理するほど高速ではありません。
すべてのリクエストが送信されたことを安全に知るための解決策はありますか? 私のクライアントがスクリプトを使用する場合、要求の少なくとも 99.5% が実際に送信されることが不可欠であり、彼のサーバーはそれを問題なく処理するのに十分強力です。セキュリティ上の理由から彼のサーバーでテストすることはできませんが、私のサーバーは動作条件をシミュレートするのに十分強力ではありません.