在循环中使用cURL - 问题太慢了

时间:2016-11-25 12:17:09

标签: php json performance curl time

我有一个大的数据库表,我获取列提取电话号码将其放入curl POST,那么如何增加时间?因为我在找到的每一行的while循环中执行curl,感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

使用CURL时,您需要与远程服务器通信所需的时间。除了确保您的服务器托管在能够快速加载远程网站的优质服务提供商之外,无法加速单个CURL请求。

您可以通过并行运行CURL请求来加快脚本速度。为此,请将CURL函数移动到单独的PHP文件,该文件通过命令行参数($ argv)接收电话号码作为参数。 该脚本还应包含使用CURL结果更新数据库的代码。

然后,使用exec()来调用脚本。例如,如果脚本是checkphone.php,请调用它:

exec('php -f /var/www/include/checkphone.php '.$phoneNumber.' > /dev/null 2>&1 &');

请注意,提供了完整目录。另外,使用:

  

/ dev / null 2>& 1&

让系统知道不要等待脚本完成运行。它将执行checkphone.php,然后继续循环遍历循环。

提醒:如果您有数百个电话号码,这将打开数百个进程,很可能会使您的服务器崩溃。在主脚本中构建控件以确保一次只打开几个并发进程。这可以通过查询数据库来查看,以查看您作为参数发送的电话号码是否已使用CURL脚本的附加信息进行更新。 此外,请确保您不要太快地向远程服务器发送太多请求,否则您将最终DDoSing服务器,这是一个禁忌。 如果您有多个可以为您提供所需信息的远程站点,请考虑在它们之间进行迭代。

答案 1 :(得分:0)

将所有请求发送给一个,然后只发送一个请求。这有效还是目标只接受每个请求一个电话号码?