我正在尝试测试创建 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 或端口系统过载,并且某些请求从未成功发送,或者我的服务器速度不够快,无法每秒处理 150 个请求。
尝试安全地知道我的所有请求都已发送的任何可能的解决方案?当我的客户使用该脚本时,必须至少实际发送 99.5% 的请求,并且他的服务器足够强大,可以毫无问题地处理这些请求。出于安全原因,我无法在他的服务器上对其进行测试,但我的功能不足以让我模拟工作条件。