繁体   English   中英

PHP并发HTTP请求?

[英]PHP Concurrent HTTP requests?

我想知道在PHP中执行并发HTTP请求的最佳方法是什么? 我有很多数据可以获取,我宁愿一次做多个请求来检索所有数据。

有人知道我怎么做吗? 最好是匿名/回调函数mannor ...

谢谢,

汤姆。

您可以使用curl_multi ,它在单个curl句柄下内部触发多个单独的请求。

但是否则PHP本身不会以任何方式/形状/形式“多线程”并且不会允许事物并行运行,除非通过严重的黑客攻击(多个并行脚本,一个脚本通过exec()启动多个后台任务等等... )。

您可以尝试curl_multi()或使用较低级别的函数socket_select()

或者,如果您愿意,您可以将数据作为json发送给您。 在PHP中,您可以再次将其碎片整理为所有值。 例如。

xhttp.open("GET", "gotoChatRoomorNot.php?q=[{"+str+"},{"+user1+"},{"+user2"}]", true);

在php中你可以按照这个来获取你的数据: 如何用PHP从JSON中提取数据?

因此,以json格式创建一个字符串,并通过http发送整个内容。 我认为你可以用xml执行相同的行为,但我不知道xml

你可以使用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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM