我可以在php中的另一个multi_curl之间进行multi_curl吗?
我想要实现的目标:
我的要求是分别对它们进行multi_curl。
我的努力: -
$ch_multi1 = curl_multi_init();
$ch_multi2 = curl_multi_init();
$ch1 = curl_init();
$ch2 = curl_init();
curl_setopt($ch1,CURLOPT_URL,"http://URL/to/page1.php");
curl_setopt($ch1,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2,CURLOPT_URL,"http://URL/to/page2.php");
curl_setopt($ch2,CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($ch_multi1,$ch1);
curl_multi_add_handle($ch_multi2,$ch2);
echo "multi_curl_1 ".date("H:i:s")."<br>";
$running1 = NULL;
do
{
$ret = curl_multi_exec($ch_multi1, $running1);
} while ($ret == CURLM_CALL_MULTI_PERFORM);
echo "multi_curl_2 ".date("H:i:s")."<br>";
do
{
curl_multi_exec ($ch_multi2, $running2);
}
while ( $running2 > 0 );
echo "result_2 ".date("H:i:s")."<br>";
$result = curl_multi_getcontent($ch2);
echo $result."<br>";
do
{
curl_multi_exec ($ch_multi1, $running1);
}
while ( $running1 > 0 );
echo "result_1 ".date("H:i:s")."<br>";
$result = curl_multi_getcontent($ch1);
echo $result."<br>";
curl_multi_remove_handle($ch_multi1, $ch1);
curl_multi_remove_handle($ch_multi2, $ch2);
curl_close($ch1);
curl_close($ch2);
我已经明确地在P1中引入了5秒的延迟,在P2中引入了10秒的延迟。它需要15秒而不是10秒。
答案 0 :(得分:0)
PHP中的curl_multi_init()
命令是异步。这意味着如果您正在编写同步函数,则不应依赖此函数的输出。
如果您依赖脚本中的执行顺序,则应使用同步功能,例如按顺序执行多个cURL,或使用回调函数。