在do ... while循环中,已用完的内存大小为134217728字节(试图分配31989760字节)

时间:2019-01-07 09:05:05

标签: php laravel memory guzzle php-ini

我有一个do while代码可以到达API以从AWS Elastic search中获取数据。当我增加大小时,会出现内存错误。现在我已将大小减小到20,但是想作为cronjob遍历结果,但是失败了。我将内存增加到4096,但是失败

我的.ini文件增加了内存限制,但是失败了。由于它是cronjob,所以我不知道如何使用滚动。

do {
  $transporter  = new TransporterController;
  $response = $transporter->dispatchSearch($paper->title, '55%', $size, $from, $rounds );
  $json_response = json_decode((string) $response->getBody(), true);
  $rounds = $json_response['rounds'];
  $from = $json_response['from'] + $json_response['size'];

  $response = $transporter->purify($response, $object);
  $impact_user_id = $paper->impact_user_id;
  $impact_type_id = 2;
  $response = $transporter->saveResult($response, $impact_user_id, $impact_type_id);
  $transporter->notifier($response, $user);
} while ($rounds > 1);

这个想法是让循环运行到最后一页。这是laravel cronjob。

1 个答案:

答案 0 :(得分:0)

以下三种增加共享主机限制的方法:

  1. 只需在您遇到错误的行之前将此行添加到 文件

     ini_set('memory_limit', '-1');
    
  2. 如果有权访问PHP.ini文件,请更改PHP.ini中的行 如果您的行显示32M,请尝试64M:memory_limit = 64M;最大金额 脚本可能会消耗的内存(64MB)

  3. 如果您无权访问PHP.ini,请尝试将其添加到.htaccess中 文件:php_value memory_limit 64M

还要确保您的文件指针有效,并为模式传递“ r”(=读取)。