2011-10-27 58 views
0

如何在使用Curl和PHP時限制併發線程?PHP:限制Curl併發線程

+0

你所說的 「併發線程」 是什麼意思?你能舉一個例子嗎? – rid

+0

我的意思是有多少用戶可以同時使用Curl。我通過HTTP訪問外部API,並且不允許打開超過18個併發線程來訪問它。 –

+0

這些腳本是如何運行的?你是否對瀏覽器發送的每個請求發出curl請求,或者你有cron腳本? – rid

回答

2

沒有什麼內置的,你可以使用,但你可以存儲你有多少當前活動會話的計數。打開卷曲會話後,您可以增加計數,並在收到答覆並關閉會話時減少計數。例如,您可以將計數存儲在文件中。只需打開文件,讀取計數,增加或減少計數,然後再將其保存在文件中。

1

我所用,是shell_exec功能是這樣的:

$max_threads = 30; 
if(shell_exec('ps -ef | grep "curl" | wc -l') < $max_threads)) { 
    shell_exec('curl http://www.google.com'); 
} 

if語句會檢查當前的工作線程對應於「捲曲」你的機器上的號碼。

但是這意味着你要通過shell_exec函數而不是通過PHP API啓動curl。

1

您可以使用curl_multi_ *函數同時處理多個捲曲手柄,設置18個會話並將它們在一堆中執行。取決於任務。

read more

+0

非常有趣,謝謝。 –

+0

@Frank Vilea,'curl_multi_ *'功能非常棒。如果您處於可以使用它們的狀況,那麼請盡一切辦法繼續。實際上,它們是我可以用PHP知道的唯一真正的多線程操作。 – rid