При использовании fopen ("php: // input") для загрузки файла с 120 МБ мы получаем предупреждение об «исчерпании памяти» из php. Php memory_limit установлен на 256 МБ, и у нас достаточно памяти.Память, израсходованная с помощью php: // input
Мы удалили весь код, кроме fopen ("php: // input"), и он все еще не работает, поэтому ошибка должна быть там.
Мы пробовали разные пределы памяти и около 500 МБ ошибка исчезает. Тем не менее, мы действительно не должны использовать 500 МБ, поэтому остается вопрос: почему мы получаем ошибку исчерпанной памяти, используя fopen в файле размером 115-120 МБ.
Наш PHP тест-файл:
<?php
$inputHandler = fopen('php://input', "r");
?>
И ошибка:
262144000 bytes exhausted (tried to allocate 120829495 bytes)
Я надеюсь, что кто-то может помочь нам. Это сводит нас с ума!
Заранее благодарен!
Вы не должны получать эту ошибку в fopen() только при чтении из $ inputHandler –
Ваш обработчик fopen - это не единственное, что использует вашу память PHP. Используйте 'memory_get_usage()', чтобы узнать, сколько памяти уже используется, прежде чем пытаться загрузить огромный файл в память. – aynber
@MarkBaker Это то, что мы также думали, но это единственная строка кода и она рушится на этом. Когда мы наблюдаем процессы httpd, мы видим, что память растет, когда файл загружается, но он никогда не становится выше 130 МБ. –