Недостаточно памяти для запуска вашего скрипта. PHP достиг предела памяти и перестает его выполнять. Эта ошибка является фатальной, сценарий останавливается. Значение предела памяти можно настроить либо в файле php.ini
, либо с помощью ini_set('memory_limit', '128 M');
в скрипте (который перезапишет значение, определенное в php.ini
). Цель ограничения памяти заключается в том, чтобы не допустить, чтобы один скрипт PHP собирал всю доступную память и приводил к остановке всего веб-сервера.
Первое, что нужно сделать, это свести к минимуму объем памяти, необходимый вашему сценарию , Например, если вы читаете большой файл в переменной или извлекаете много записей из базы данных и сохраняете их все в массиве, которые могут использовать много памяти. Измените свой код, чтобы вместо этого читать строки по строке или извлекать записи базы данных по одному, не сохраняя их все в памяти. Это требует немного концептуального понимания того, что происходит за кулисами, и когда данные хранятся в памяти и в других местах.
Если эта ошибка возникла, когда ваш сценарий не выполнял интенсивную работу с памятью, вы вам нужно проверить свой код, чтобы узнать, есть ли утечка памяти. Функция memory_get_usage
является вашим другом.
Вопросы, относящиеся:
Clone
намного быстрее, чем Storable::dclone
, но последние поддержки больше типов данных.
Clone::Fast
и Clone::More
в значительной степени эквивалентны, если не изменяет память, меня право, но меньше функции, завершенной, чем даже Клон, и Scalar::Util::Clone
поддержки еще меньше, но IIRC является самым быстрым из них всех для некоторых структур.
Относительно удобочитаемости они должны все работать то же, они являются фактически взаимозаменяемыми.
, Если бы у Вас нет потребностей реального исполнения, я просто использовал бы dclone Storable.
я не использовал бы Data::Dumper
для этого просто, потому что это таким образом громоздкое и окольное. Это, вероятно, будет очень медленным также.
Если это имеет значение, если Вы когда-нибудь хотите настраиваемое клонирование тогда Data::Visitor
, обеспечивает сцепляющиеся возможности, и справедливо функция завершается, глубокое клонирование является поведением по умолчанию.
Мое впечатление - то, что Storable::dclone()
является несколько каноническим.
Клон , вероятно, что Вы хотите для этого. По крайней мере, это - то, что весь код я видел использование.