Я получаю сообщение об ошибке:PHP - OutOfMemoryException
Error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 13343871 bytes)
Я не удивлен, потому что это на скрипт, который генерирует отчет с тысячами записей (полученных с тысячами запросов SQL - по своей природе это просто никогда не будет эффективным сценарием). Это медленный скрипт, и все в порядке - у меня есть предупреждение на странице, чтобы уведомить пользователя об этом.
Я просто не хочу, чтобы эта ошибка происходила.
Созданный CSV-файл представляется мне полным (с точки зрения данных), но в нижней части файла CSV я получаю трассировку стека и исключение OutOfMemoryException, как в приведенном выше сообщении.
Для этой конкретной части сценария я переопределен в PHP по умолчанию:
ini_set('memory_limit', '512M');
ini_set('max_execution_time', 300);
Есть ли что-нибудь еще, что я мог бы делать?
Я бы попробовал потоковое видео csv. Сбрасывайте выходной буфер так часто. Зачем хранить все это в памяти перед отправкой? – keyboardSmasher
если вы не заботитесь о распределении еще большего объема памяти –