PHP向数百个站点发送post请求的最佳方式?

PHP向数百个站点发送post请求的最佳方式?,php,multithreading,wordpress,post,parallel-processing,Php,Multithreading,Wordpress,Post,Parallel Processing,我尝试过使用Rolling Curl、Epi Curl和其他PHP multi-Curl解决方案,平均只需180秒就可以向40个站点发送post请求并从它们那里接收数据(我指的是接收少量成功/失败字符串),这太慢了 它只适用于1个post请求,大约3-6秒,我甚至不知道这是否好,因为我看到其他人谈论得到1秒的响应,这太疯狂了 我也尝试过使用proc_open来运行Linuxshell命令(curl、wget),但这也很慢,而且对服务器不友好 我正在尝试做的是一个Wordpress插件,它能够管理

我尝试过使用Rolling Curl、Epi Curl和其他PHP multi-Curl解决方案,平均只需180秒就可以向40个站点发送post请求并从它们那里接收数据(我指的是接收少量成功/失败字符串),这太慢了

它只适用于1个post请求,大约3-6秒,我甚至不知道这是否好,因为我看到其他人谈论得到1秒的响应,这太疯狂了

我也尝试过使用proc_open来运行Linuxshell命令(curl、wget),但这也很慢,而且对服务器不友好

我正在尝试做的是一个Wordpress插件,它能够管理多个Wordpress站点,并进行大规模升级、远程发布、blogroll管理等。我知道有一个叫做managewp.com的站点,但我不想使用他们的服务,因为我想让我管理的站点保持私有并开发自己的站点。我注意到他们的请求/响应速度快得离谱,我只是对他们如何做到这一点感到困惑,尤其是在数百个网站上

那么,有人能告诉我怎样才能更快地发送这些帖子吗

编辑

我一直在思考,我问自己,“获取响应有什么那么重要?并不是发送的请求没有得到正确的处理,它们在99%的时间里都得到了处理!”


所以我在想也许我可以发送所有的请求而不得到回复。如果我真的想跟踪这些进程以及它们是如何进行的,我可以让这些子站点发送一个post请求,返回进程的状态,让主站点将它们添加到数据库表中,并让ajax请求查询,比如每10秒左右进行一次状态更新之类的。。听起来怎么样?

cUrl每次请求大约需要0.6-0.8秒

因此,对于大约500个网站来说,可能需要300到400秒

你可以通过一个循环来实现这一点

$ch=curl_init();//初始旋度
curl_setopt($ch,CURLOPT_URL,”http://www.example.com/post.php"); // 岗位定位
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//1=返回数据,0=不返回
curl_setopt($ch,CURLOPT_POST,true);//这是邮局
//我们的数据
$postdata=数组(
'name1'=>'value1',
'name2'=>'value2',
'name3'=>'value3',
'name4'=>'value4'
);
curl_setopt($ch,CURLOPT_POSTFIELDS,$postdata);//将数据添加到请求中
$o=curl_exec($ch);//执行请求
卷曲关闭($ch);//完成请求。关上它。

这也取决于你的连接速度。从数据中心进行测试应该没问题,如果您在家中进行测试,结果可能不太好。

我目前正在进行一个项目,使用PHP和。批量处理多达250个URL,并使用
CURLOPT_TIMEOUT
CURLOPT_CONNECTTIMEOUT
优化代码速度

我有一个cURL类(2500多行)处理所有cURL魔法,包括多文件和直接文件下载。250个URL/15-25秒,使用适当的超时。(但我不是免费分享的…)


PS:下载许多URL需要使用临时文件作为下载目标,而不是内存。只是想一想…

用户可能没有使用PHP进行更新服务(使用Java进行多线程)?您还可以尝试一下PHP(它还支持并发查询),这不是关于cURL需要多长时间,而是服务器需要多长时间来处理请求。考虑到一些URL已经不存在了,如果DNS解析失败,那可能需要一分钟的时间。哦,真可爱!我告诉他怎么做。。。不是吗?但我花了很多时间在工作中的代码却没有出现。