2012-01-16 5 views
4

タイトルに記載されているように私の質問はとても簡単です。しかし、私は再びそれを言い換える。PHP-CURLのcurl_multi_execは本当にマルチスレッド化されていますか?

php-curlを使用して複数のサイトをダウンロードしたいと考えています。私はコンソールからそれを実行します。私はcurl_multi_execを使用してすべてのサイトをダウンロードします。今質問は、スレッドのスレッドごとにリクエストを作成しますか?

私は複数のプロセスをフォークすることで達成できることは分かっています。しかし、それはスレッディングではありません。私はスレッドをしたくない。私はそのマルチスレッドかどうかを知りたいですか?

+0

これはcURLの[ソース](https://github.com/bagder/curl/blob/master/lib/multi.c)を調べるだけで解決できる質問ですが、根本的な質問にはもっと興味深い:なぜこれを知りたいのですか?マルチURLがスレッドを使用しないと思っている理由に関する詳細情報を指定してください。 – CodeCaster

+0

ああ、私は源を見ませんでした。 –

+0

私は実際にファイルを同時にダウンロードしようとしていました。しかし、PHPはマルチスレッドではありません。だから私はcurl_multi_ *を試してみると思った。そして、この質問が私の心に入った。 –

答えて

11

いいえ。マルチインターフェースは複数のリクエストを並行して処理しますが、非ブロッキングAPI呼び出しを使用します。

ほとんどのオペレーティングシステムで標準ホスト名リゾルバ機能が同期しているため、特定の転送でホスト名を解決する必要がある場合に問題が発生し、各解決が他のすべての転送をブロックします。これはlibcurlで、解決のためにc-aresを使用するように構築されたものと別のスレッド(いわゆるスレッダリゾルバ)で「株価レゾルバ」を起動するものなど、代替のリゾルババックエンドを提供することによって克服されます。

+0

はい、PHPの終わりには、単一のスレッドがあることがわかります。内部的にcURLはどうでしょうか?私はそれがここの質問だと思う。今すぐ名前解決の問題を無視してください。 – Brad

+1

私は内部的にlibcurlについて話しています。私はPHPのものを知らないが、私はlibcurlの内部をよく知っている... –

+0

ああ、大丈夫! +1、あなたの答えをありがとう。 – Brad

関連する問題