одному из моих script требуется большая память. и, вероятно, из-за этого я получаю следующую ошибку
Неустранимая ошибка: Недостаточно памяти (выделено 42729472) (попытался выделить 32 байта)
Я попытался изменить memory_limit с помощью ini_set ('memory_limit', '256M'); в верхней части моей страницы, но все же я получаю одинаковые проблемы. Я также попытался ini_set ('memory_limit', '512M'); но не повезло.
Это сбой после 42M, что говорит мне, что интерпретатор PHP не получил заметку. Попробуйте использовать те же ini_set()
на тестовой странице с выходом phpinfo()
и найдите ограничение на память.
Можете ли вы установить его в файле php.ini
вместо этого?
У вас есть доступ к файлу php.ini? Затем измените значение memory_limit.
Вы также должны проанализировать свой script. Много транзакций базы данных? Многие из них в петлях? Много петель? Много временных переменных? Умное использование unset может иметь огромное значение.
Также приятно знать: Рекомендации по производительности и Коллекция мусора
Изменить (возможный ответ на ваш вопрос, почему memory_limit
не работает с ini_set
)
memory_limit integer. Это устанавливает максимальный объем памяти в байтах, который a script разрешено выделять. Эта помогает предотвратить плохо написанные сценарии для съедания всей доступной памяти на сервер. Обратите внимание, что для отсутствия памяти limit, установите эту директиву на -1.
До PHP 5.2.1, чтобы использовать эта директива должна была быть разрешена на время компиляции, используя - включить-память-лимит в строке конфигурации. Этот флаг времени компиляции также был требуется для определения функций memory_get_usage() и memory_get_peak_usage() до 5.2.1.
Когда используется целое число, это значение равно измеренный в байтах. Сокращенная нотация, как описано в этом FAQ, также может быть б.
источник: php.net
У меня раньше была аналогичная проблема. В моем случае это был пакет suhosin, предотвращающий получение script большего объема памяти.
ini_set('memory_limit', '512M');
местная машина? размещенный сайт?