用尽134217728个字节允许内存大小(试图分配31989760个字节)在do ... while

2019-10-30 09:25发布

我有一个做,而达到一个API代码从AWS弹性搜索数据。 当我增加的大小,我得到的内存错误。 我现在已经缩小到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。

Answer 1:

这里有三种方法来增加共享主机的限制:

  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”(=读)的模式。



文章来源: Allowed memory size of 134217728 bytes exhausted (tried to allocate 31989760 bytes) In a do…while loop