2012-01-16 80 views
4

我的問題非常簡單,正如標題所述。但是我再次修改它。PHP-CURL的curl_multi_exec是否真的是多線程的內部?

我想用php-curl下載多個站點。我會從控制檯運行它。我將使用curl_multi_exec下載所有網站。現在的問題,將捲曲創建不同的線程爲每個請求?

我知道我可以通過分叉多個進程來實現它。但那不是線程。我不想穿線。我想知道它的多線程?

+0

雖然這是可以簡單地通過觀察到[源]得到答案的問題(https://github.com/bagder/curl/blob/master/lib/multi.c)捲曲,底層問題可以更有趣:爲什麼你想知道這一點?指定更多關於爲什麼您認爲multicURL不_使用線程的信息。 – CodeCaster 2012-01-16 16:04:16

+0

哦,我沒有看到消息來源。 – 2012-01-16 16:10:23

+0

我實際上是在試圖同時下載文件。但是PHP不是多線程的。所以我想試試'curl_multi_ *'。然後這個問題進入我的腦海。 – 2012-01-16 16:11:43

回答

11

不。多接口並行執行多個請求,但它使用非阻塞API調用。當一個特定的傳輸需要解析主機名在大多數操作系統中的標準主機名解析功能是同步的,這使得每塊的決心與所有其他轉移發生

,人們可能會面臨這個問題就。這在libcurl中通過提供替代解析器後端來解決,例如爲解析使用c-ares而構建的後端解析器,以及另一個在單獨線程中觸發「庫存解析器」的解析器 - 所謂的線程解析器。

+0

是的,我們知道在PHP端,只有一個線程。內部cURL怎麼樣?我認爲這是個問題。暫時忽略名稱解決問題。 – Brad 2012-01-19 02:18:27

+1

我在內部討論libcurl。我不知道PHP的東西,但我知道的libcurl內部非常好... – 2012-01-19 09:07:22

+0

啊,OK! +1,謝謝你的回答。 – Brad 2012-01-19 14:43:29