file_get_contents и file_put_contents с большими файлами

Я пытаюсь получить содержимое файла, заменить некоторые его части с помощью регулярных выражений и preg_replace и сохранить его в другом файле:

$content = file_get_contents('file.txt', true); $content_replaced = preg_replace('/\[\/m\]{1}\s+(\{\{.*\}\})\s+[\x{4e00}-\x{9fa5}]+/u', 'replaced text', $contents); if ($content_replaced) { file_put_contents('file_new.txt', $content_replaced); echo "Successful!"; } else { echo "Some error ocurred"; } 

этот фрагмент кода отлично работает с небольшими файлами, но когда я пытаюсь создать исходный файл, который составляет около 60 Мб, он просто дает мне сообщение «Некоторая ошибка.

Любые предложения приветствуются.

Обновить. Нет ошибок в журналах, ограничение памяти установлено на 1024 М

Я уверен, что вы нажмете ограничение на регулярное выражение. Черт, некоторое время назад я достиг предела с 1000 символами … с 60 Мб ввода. Ставка на то, что вы, скорее всего, повредите пределы регулярного выражения повсюду и с действительно простыми шаблонами. Я постараюсь, по крайней мере, максимально упростить его, сделав его неровным .*? вместо .* если возможно.

Чтобы получить дополнительную информацию, просто проверьте возвращаемое значение preg_last_error() .

У меня были проблемы с max / limit с file_put_contents .

Не знаю, какие ограничения могут быть, но использование fwrite решило мои проблемы, и я положил бутылку.

Вероятно, у вас не хватает памяти. На что установлен memory_limit? (phpinfo () скажет вам). Возможно, вы сможете увеличить предел памяти, например:

 ini_set('memory_limit','128M');