我正在使用以下 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 中的内容在加载时显示在父脚本中吗?