phpカール_マルチマルチスレッドの例はあまり使用されませんが、phpがマルチスレッドを使用する場合は、phpcurl_multiを使用します。
<script>ec(2);</script>
PHP 自体にはマルチスレッドがありません。拡張機能を利用して実装できます。ただし、curl_multi* 関数は、Web サイト データへのマルチスレッド アクセスの機能を実装します。
手順は次のように要約されます:
ステップ 1:curl_multi_init を呼び出す
ステップ2: ループ内でcurl_multi_add_handleを呼び出す
この手順で注意する必要があるのは、curl_multi_add_handle の 2 番目のパラメータがcurl_init のサブハンドルであることです。
ステップ 3: 引き続き、curl_multi_exec の呼び出しを行います
ステップ4: 必要に応じてループ内でcurl_multi_getcontentを呼び出し、結果を取得します
ステップ 5: 単語ハンドルごとにcurl_multi_remove_handleを呼び出し、curl_closeを呼び出します
ステップ 6:curl_multi_close を呼び出す
コードは次のとおりです |
コードをコピー |
$t=getTime();
$total=10;
for($i=0;$i<$total;$i++){
$url_arr[] = "http://www.111cn.net /test";
}
$mh =curl_multi_init();
foreach ($url_arr as $i => $url) {
$conn[$i] =curl_init($url);
curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,1); //リターンページの出力内容を設定します
curl_multi_add_handle ($mh,$conn[$i]); // スレッドを追加します
}
#----------------実行スレッド----------------
やります{
$mrc =curl_multi_exec($mh,$active);
}while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active および $mrc == CURLM_OK) {
if (curl_multi_select($mh) != -1) {
やります{
$mrc =curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
foreach ($url_arr as $i => $url) {
$res[$i]=curl_multi_getcontent($conn[$i]);// ページ入力コンテンツを取得します
curl_multi_remove_handle($mh, $conn[$i]);
curl_close($conn[$i]);
}
curl_multi_close($mh);
foreach($res as $k=>$v){
$k=str_pad($k,2,0);
echo "$k => $v ";
}
実行時間($t);
#---------- 時間計算関数---------------
関数 getTime(){
$TIME=explode(" ",microtime());
$TIME=$TIME[1].substr($TIME[0],1);
$TIME を返します;
}
関数 runTime($t,$l=3){
$dif=getTime()-$t;
echo ' '.number_format($dif,$l);
}
?>
|