更好地优化PHP Cron Job的方法

时间:2013-02-01 13:45:28

标签: 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 = 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++;
}

我遇到的问题是我不确定进程何时完成并且我的开发服务器开始崩溃。由于预计数据会增长,我知道这对我的问题来说是一个非常糟糕的解决方案。

我可以考虑使用更好的方法来完成这样的任务吗?我觉得这更像是一个'黑客'

1 个答案:

答案 0 :(得分:0)

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