2013-08-05 2 views
1

Я строю большую строку из базы данных, иногда она попадает в МБ. Есть ли способ записать строку в файл после того, как ее размер пересекает определенные пределы (байты). Меня беспокоит как можно скорее освободить память. С другой стороны, идея открытия файлового ресурса и записи на него через определенные интервалы кажется бесполезной из-за задержки на диске и т. Д.Вставить большую строку в файл в php

a) Как вы управляете большой конкатенацией строк и сохраняете ее в файл?

b) Существуют ли какие-либо классы SPL для управления этим видом деятельности, чтобы повысить производительность, или мы являемся милостью любимого (.) Оператора точки?

+0

Видя, как данные, которые вы получаете из базы данных будут поступать в одну огромной строке, то, вероятно, нет способа сделать это любым другим способом. Вы можете записывать данные в файл последовательно, но кажется бессмысленным, если исходные данные на 100% присутствуют сразу. –

+0

нет последовательности, которая постепенно объединяется, т.е. 'foreach row' – sakhunzai

+2

. Тогда почему бы не использовать старые добрые http://php.net/manual /en/function.fwrite.php для последовательного написания? Должен работать нормально –

ответ

2

Просто напишите его на диске для каждой строки. Это позволит свести к минимуму объем оперативной памяти, используемой в любой момент времени, и латентность диска должна быть примерно одинаковой.

$fp = fopen('filename.txt', 'w'); 

while($row = // query stuff) { 
    fwrite($fp, $row['column']); 
} 
fclose($fp); 
+0

спасибо, если это так просто, я буду танцевать :) – sakhunzai

Смежные вопросы