我想知道在PHP中执行并发HTTP请求的最佳方法是什么?我有很多数据可以获取,我宁愿一次做多个请求来检索所有数据。
有人知道我怎么做吗?最好是匿名/回调函数mannor ......
谢谢,
汤姆。
答案 0 :(得分:9)
您可以使用curl_multi,它会在一个卷曲句柄下内部触发多个单独的请求。
但是否则PHP本身不会以任何方式/形状/形式“多线程”并且不允许并行运行,除非通过严重的黑客攻击(多个并行脚本,一个脚本通过exec()启动多个后台任务,等等...)。
答案 1 :(得分:2)
您可以尝试curl_multi()或使用较低级别的功能socket_select()
答案 2 :(得分:1)
或者,如果您愿意,您可以将数据作为json发送给您。在PHP中,您可以再次将其碎片整理为所有值。例如。
xhttp.open("GET", "gotoChatRoomorNot.php?q=[{"+str+"},{"+user1+"},{"+user2"}]", true);
在php中,您可以按照此操作获取数据:How do I extract data from JSON with PHP?
因此,以json格式创建一个字符串,并通过http发送整个内容。 我认为你可以用xml执行相同的行为,但我不知道xml
答案 3 :(得分:0)
您可以使用HttpRequestPool http://www.php.net/manual/de/httprequestpool.construct.php
$multiRequests = array(
new HttpRequest('http://www.google.com', HttpRequest::METH_GET),
new HttpRequest('http://www.yahoo.com', HttpRequest::METH_GET)
new HttpRequest('http://www.bing.com', HttpRequest::METH_GET)
);
$pool = new HttpRequestPool();
foreach ($multiRequests as $request)
{
$pool->attach($request);
}
$pool->send();
foreach($pool as $request)
{
echo $request->getResponseBody();
}