2010-11-18 61 views
2

我在php中使用curl_multi_exec來檢查一些URL的狀態。我想對此進行基準測試,以便對於給定的系統,我知道在curl開始排隊之前可以同步檢查多少個處理程序。有沒有人有如何衡量產能的經驗?curl_multi_exec使用多少個線程?

感謝,

亞當

+0

您可以使用'netstat'並觀察打開的活動連接數。然後增加url的數量,直到你注意到從netstat開始的計數開始下降... – ircmaxell 2010-11-18 15:14:24

+0

是的,我想過,但大多數url將會在不到半秒的時間內返回。我會試試看,謝謝! – 2010-11-18 15:18:59

+0

那麼,在同一個服務器(或另一個本地)上創建一個站點。創建一個只休眠60秒左右的頁面。然後打開大量的連接到該頁面。這應該足夠長,以便從'netstat'獲得有意義的輸出,但仍然可以輕鬆快速地構建... – ircmaxell 2010-11-18 15:21:14

回答

2

你可以從它使用選擇PHP源代碼()和非阻塞讀看到。 所以只有一個過程被使用。

請注意,如果給它一個fd> = FD_SETSIZE的文件描述符,select()會失敗。編譯PHP時定義了FD_SETSIZE限制。默認情況下似乎是256.在PHP實現中使用poll()會更好。

關於正確curl_multi_exec()的用法:

curl_multi_exec()應該由curl_multi_select遵循()。這將等待可用數據,而不是在繁忙的循環中檢查它們。 example in the PHP manual很好。