0

我的项目的每个用户都有一个 Cron,每 5 分钟执行一个 php 脚本,执行大约需要 4 分钟。我找不到“更轻松”的方式来做到这一点!

但是现在我面临内存问题,因为有时文件会在同一个“时间空间”中执行,这会使我的虚拟内存增加!

我试图让我的循环更轻,但它们仍然为每个文件消耗 25MB!

如果你们有任何好的解决方案,我将不胜感激:)。这里是

for($x = 0; $x <= 14; $x++)
{

    $r = rand(0,7);
    $jsonData = $this->getsomejson($value[$r]);
    if ($this->meta->code == 400){continue;}

    foreach ((array)$jsonData->data as $key=>$value)
    {
        $result = doSomething($value->id,$Token[$x]);
        if ($result==200){$L++;}
        $i++;
        unset($value);
    }      

    unset($r,$jsonData,$value);
}
4

2 回答 2

0

因为我不知道“getsomejson”和“doSomething”背后的代码是什么,所以很难说这里的瓶颈是什么。

如果这些是 2 个非常简单的函数,我猜问题是您必须加载一个巨大的 json 文件,并且您可能会尝试压缩该文件。

否则,您应该提供有关“getsomejson”和“doSomething”功能的更多详细信息,看看是否可以优化这些功能

于 2012-11-15T23:00:06.883 回答
0

我们可以在cron作业开始时设置一个信号或标记,然后我们检查这个信号或标记以查看是否有作业在运行,如果是,则停止启动新作业,否则,启动它。

我们可以将此信号或标记存储在文件或数据库表中

$signal = get_it_from_file(); 
if ($signal < max) {
  //start to do our job
   ..............
   $signal = $signal+1;
   store_it_to_file();
} else {
      //skip it
}

我们可以调整 max 来控制同时运行的作业数量

于 2012-11-16T00:08:27.710 回答