Разрешенный объем памяти 134217728 байт исчерпан (попытался выделить 31989760 байт) в цикле do ... while - PullRequest
0 голосов
/ 07 января 2019

У меня есть код do while, который достигает API для получения данных из поиска AWS Elastic. Когда я увеличиваю размер, я получаю ошибку памяти. Теперь я уменьшил размер до 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);

Идея состоит в том, чтобы цикл продолжался до последней страницы. Это ларвель cronjob.

1 Ответ

0 голосов
/ 07 января 2019

Вот три способа увеличить лимит на виртуальный хостинг:

  1. Просто добавьте эту строку ниже, перед тем, как вы получите ошибку в вашем файл

     ini_set('memory_limit', '-1');
    
  2. Если у вас есть доступ к файлу PHP.ini, измените строку в PHP.ini Если ваша строка показывает 32M, попробуйте 64M: memory_limit = 64M; Максимальная сумма памяти, которую может занять скрипт (64 МБ)

  3. Если у вас нет доступа к PHP.ini, попробуйте добавить это в .htaccess файл: php_value memory_limit 64M

Также убедитесь, что указатель вашего файла действителен, и передайте «r» (= чтение) для режима.

...