Допустимый размер памяти *** байт исчерпан даже после настройки php.ini

Внезапно эта строка

$data_to_send = @file_get_contents($source);

выдает мне ошибку

{ошибка: {тип: Symfony\Component\Debug\Exception\FatalErrorException, сообщение: Исчерпан допустимый размер памяти 536870912 байт (попытка выделить 353912831 байт), файл:/home/forge/biossantibodies.com/app/commands/FileName. php, строка: 157}}

обновить ресурсы ВМ

Я уже обновил свою виртуальную машину Linode до этого плана и до сих пор не вижу ошибки.


обновить PHP.ini

Я проверил свой php.ini и обновил его до

cat php.ini | grep _max                                                                                                         
log_errors_max_len = 1024
post_max_size = 2000M
upload_max_filesize = 2000M
session.gc_maxlifetime = 1440
;       setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):

перезапустить службу php-fpm

Как видите, я увеличил объем памяти уже до 2000M.

Я также перезагружаю свой php-fpm прямо сейчас

service php5-fpm restart


phpinfo()

  • Мои изменения, кажется, отражены.

введите здесь описание изображения

введите здесь описание изображения


перезапустить всю виртуальную машину

Я даже пытался перезагрузить всю виртуальную машину.

Я все еще сталкиваюсь с той же проблемой, я изменил не тот файл?

Как мне перепроверить?


person cyb3rZ    schedule 31.01.2018    source источник
comment
Для отладки: добавьте echo, который будет выводить $source и размер файла непосредственно перед этой строкой, и посмотрите, что получится.   -  person KIKO Software    schedule 31.01.2018
comment
Позвольте мне сделать это сейчас, и я обновлю пост.   -  person cyb3rZ    schedule 31.01.2018
comment
@KIKOSoftware: я получил размер файла: 345620   -  person cyb3rZ    schedule 31.01.2018
comment
См. здесь: dropbox.com/s/ml2idhm33mw0x5o/   -  person cyb3rZ    schedule 31.01.2018
comment
И fire() вызывается только один раз? Обычно, когда у вас заканчивается память, вы застреваете в какой-то петле.   -  person KIKO Software    schedule 31.01.2018
comment
Сценарий в основном зацикливает все строки в таблице базы данных и экспортирует их в файл csv, а SFTP загружает их на SFTP-сервер. Это сквозная петля? да. Что касается того, почему он завис, я думаю, что он завис во время загрузки, но я не уверен.   -  person cyb3rZ    schedule 31.01.2018
comment
Код работает уже 3 года, но теперь размер файла становится огромным. Есть ли что-нибудь в конфигурации PHP или Nginx, на что мне следует обратить внимание, чтобы изменить? У меня такое ощущение, что на данный момент код менее подозрительный, поскольку раньше он работал.   -  person cyb3rZ    schedule 31.01.2018
comment
Я не знаю точно, что делает ваш код, но, учитывая размер файла 345620 (байт?), строка, генерирующая ошибку, вероятно, не является той строкой, в которой проблема. Я думаю, что это как-то связано с кодом, так как 536870912 байт довольно много. Вы можете использовать следующую команду для проверки использования памяти во время выполнения: php.net /manual/en/function.memory-get-usage.php снова с эхом.   -  person KIKO Software    schedule 31.01.2018
comment
Возможно, стоит проверить, нет ли у вас другого файла php.ini для командной строки.   -  person fubar    schedule 31.01.2018
comment
какие команды я должен запустить? Но я уже проверяю phpinfo().   -  person cyb3rZ    schedule 31.01.2018


Ответы (1)


"Разрешенный размер памяти 536870912 байт исчерпан (попытка выделить 353912831 байт)"

Это означает, что вам также необходимо обновить директиву memory_limit в php.ini.

Попробуйте вставить свой php.ini:

memory_limit=1024M
person Elisio L Leonardo    schedule 31.01.2018
comment
Хорошо, я обновляю свой с 1024M до 4096M. Проверьте, правильно ли отображается phpinfo(), и повторите попытку. - person cyb3rZ; 31.01.2018
comment
Возможно, стоит уточнить у хостинговой компании, какой у них лимит памяти. Если они ограничивают вас определенной суммой, не имеет значения, на что вы изменили свой php.ini. - person sdexp; 02.02.2018
comment
См. этот вопрос. Вам следует попробовать перезапустить nginx/apache. - person sdexp; 02.02.2018