ホームページ  >  記事  >  バックエンド開発  >  PHP で foreach とcurlを組み合わせてマルチスレッドを実装する方法の分析

PHP で foreach とcurlを組み合わせてマルチスレッドを実装する方法の分析

高洛峰
高洛峰オリジナル
2016-12-21 11:46:471241ブラウズ

この記事の例では、foreach とcurl を組み合わせて使用​​して、PHP でマルチスレッドを実現する方法について説明します。参考までに皆さんと共有してください。詳細は次のとおりです:

マルチスレッドは PHP ではサポートされていませんが、foreach を使用して疑似マルチスレッドにすることができますが、この疑似マルチスレッドは必ずしもシングルよりも高速であるとは限りません具体的には、例を見てみましょう。

foreach ステートメントを使用して画像 URL をループし、CURL を介してすべての画像をローカルに保存する場合、1 つしか収集できないという問題が発生します。

方法 1: ループ リクエスト

上記のコードで特別な注意が必要なのは、curl_close が foreach ループの内側に配置されている場合、その外側に配置する必要があることです。複数の IMGURL は 1 つの URL しか収集できません。

方法 2: マルチスレッド ループ

$sr=array(url_1,url_2,url_3);
foreach ($sr as $k=>$v) {
 $curlPost=$v.'?f=传入参数';
 $ch = curl_init($curlPost) ;
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回
 curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回
 $data = curl_exec($ch) ;
 echo $k.&#39;##:&#39;.$data.&#39;<br>&#39;;
}
curl_close($ch);

ここでは主に、curl_multi_init() を使用して複数の URL リクエストを実装します。マルチスレッドをサポートしているため、擬似マルチスレッドの速度が必ずしもシングルスレッドの速度より速いとは限りません

この記事が PHP プログラミングのすべての人に役立つことを願っています。


PHP でマルチスレッドを実現するために、curl と組み合わせた foreach メソッドの詳細な分析については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。