我想測試我的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