1

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

我正在用 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++;
}

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

对于这样的任务,我应该考虑使用更好的方法吗?我只是觉得这更像是一个“黑客”

4

1 回答 1

0

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

于 2013-02-01T14:19:11.910 回答