优化PHP Cron作业的更好方法

优化PHP Cron作业的更好方法,php,web-services,soap,asynchronous,cron,Php,Web Services,Soap,Asynchronous,Cron,我不能进入太多的细节,因为这是一个工作项目,但无论如何 我正在用PHP编写一个SOAP客户端,它将所有响应推送到MySQL数据库。我的主脚本发出一个初始soap请求,该请求目前检索大约4000个大型项目集,但该列表预计在某个时候会增长到数十万个 返回这个包含4000个项目的列表后,我使用exec/usr/bin/php path/to/my/historyScript.php&为每个项目发送历史记录请求。web服务api最多支持每秒30个请求。下面是我目前正在做的一些伪代码: $count =

我不能进入太多的细节,因为这是一个工作项目,但无论如何

我正在用PHP编写一个SOAP客户端,它将所有响应推送到MySQL数据库。我的主脚本发出一个初始soap请求,该请求目前检索大约4000个大型项目集,但该列表预计在某个时候会增长到数十万个

返回这个包含4000个项目的列表后,我使用exec/usr/bin/php path/to/my/historyScript.php&为每个项目发送历史记录请求。web服务api最多支持每秒30个请求。下面是我目前正在做的一些伪代码:

$count = 0;

foreach( $items as $item )
{
    if ( $count == 30 )
    {
      sleep(1); // Sleep for one second before calling the next 30 requests
      $count = 0;
    }

    exec('/usr/bin/php path/to/history/script.php &');
    $count++;
}
我遇到的问题是,我不确定进程何时结束,我的开发服务器何时开始崩溃。由于数据预计会增长,我知道这是一个非常糟糕的解决方案,我的问题


也许我应该考虑一个更好的方法来执行这样的任务吗?我只是觉得这更像是一种“黑客行为”

我不确定,但我觉得应用程序崩溃的原因是,您将大量数据保存在PHP变量中。考虑到这一点,基于RAM大小,此数据大小将导致系统崩溃。我的建议是,尽量限制每个请求从外部服务传入的数据,而不是服务的请求数。

您可以尝试计算处理30个请求所花的时间,然后睡眠1-2个小时,这会使处理速度稍快一些。感谢您的反馈!我现在优化了脚本!我会确保在查询完成后立即断开与数据库的连接,我会睡2秒钟,而不是1秒钟。这允许API处理我的请求。