fwrite или file_put_contents и большие объемы

L0
На сайте с 26.12.2016
Offline
30
2164

При записи в файл с помощью функций fwrite или file_put_contents данных объемом больше 300мб выдает ошибку

PHP Fatal error: Allowed memory size of 3221225472 bytes exhausted

хотя в memory_limit стоит 16gb , подскажите как решить эту проблему?

SocFishing
На сайте с 26.09.2013
Offline
118
#1

Читать и писать частями.

function customCopy($in, $out)

{
$size = 0;

while (!feof($in))
$size += fwrite($out, fread($in,8192));

return $size;
}

$fp = fopen("in.txt", "r");
$out = fopen("out.txt", "wb");
customCopy($fp, $out);
fclose($out);
fclose($fp);

или

$fp = fopen("in.txt", "r");

$out = fopen("out.txt", "wb");
fseek($fp, $se);
while ($data = fread($fp, 8192)){
fwrite($out, $data);
}
fclose($out);
fclose($fp);
★Сервис идентифицирует (https://socfishing.com/?utm_source=searchengines) посетителей вашего сайта и предоставляет их профили ВКонтакте, Телефон, Почта! Цены копеечные, работаем 8 лет.
L0
На сайте с 26.12.2016
Offline
30
#2

SocFishing, а как быть если $data у меня генерируется? тогда fread отпадает

вот код


$handle = fopen('../uploads/data.xml', 'w');
fwrite($handle, $data);
fclose($handle);
LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#3

Ну что-то как на лимит то ваш не похоже.

У вас вышибает на 3 ГБ, никак не на 16 ГБ

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
S
На сайте с 17.08.2008
Offline
114
#4
У вас вышибает на 3 ГБ

Операционная система может 32 битная, или есть лимит на потребление памяти, и он никак не 16гб.

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#5
smbbws:
Операционная система может 32 битная, или есть лимит на потребление памяти, и он никак не 16гб.

Нафига на 32 битной 16 ГБ памяти?

TF-Studio
На сайте с 17.08.2010
Offline
334
#6
LEOnidUKG:
Нафига на 32 битной 16 ГБ памяти?

всякое же бывает. поставил чтобы было )

вообще лучше большие вещи частями писать/читать

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий