次の CURL マルチスレッドを使用して、マルチスレッドを PHP プロセスに追加しています。
function multithread_it($url,$threads){
$started=0;
while ($started<$threads){
$ch[$started] = curl_init();
curl_setopt($ch[$started], CURLOPT_URL, $url);
curl_setopt($ch[$started], CURLOPT_HEADER, 0);
curl_setopt($ch[$started], CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch[$started], CURLOPT_RETURNTRANSFER, 0);
$started++;
}
$started=0;
$mh = curl_multi_init();
while ($started<$threads){
curl_multi_add_handle($mh,$ch[$started]);
$started++;
}
$started=0;
$running=null;
do {curl_multi_exec($mh,$running);} while($running > 0);
while ($started<$threads){
curl_multi_remove_handle($mh, $ch[$started]);
$started++;
}
curl_multi_close($mh);
ob_flush();
flush();
}
これは、使用と呼ばれます。
multithread_it($script_dir."script.php",10);
私が持っているscript.phpの中に:
for($i=0;$i<10;$i++){
echo $i."<br />";
sleep(1);
ob_flush();
flush();
}
しかし、データは失速します。multithread_it を呼び出すスクリプトは、すべてのスクリプトが完了するまで待ってから、突然画面にジャンプするデータを表示します。
これは、実際には実行に約 10 分かかるスクリプトのサンプル データにすぎませんが、flush、ob_flush、および正確な関数で使用される概念とコードはまったく同じです。
script.php 内のコンテンツを取得して、ロード時に親スクリプトに表示する方法はありますか?