我想测试我的PHP脚本,它创建了48个cURL多个句柄,每个句柄持有大约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%的请求实际发送至关重要,而且他的服务器足够强大,可以毫无问题地处理这些请求。出于安全原因,我无法在服务器上测试它,但我的功能不足以模拟工作条件。
只是简单的说明 - 将数据存储到平面文件(尤其是如果它是单个平面文件)可能会给您在处理同时发生的请求时带来麻烦。这是一个瓶颈。如果您需要将数据记录到中央存储中,可以查看使用数据库(可以处理同时写入)。你如何衡量实际页面负载的数量? – 2010-12-06 00:58:30