|
|
|
| Имеется несколько файлов, из которых нужно собрать один, просто просуммировав имеющуюся в них информацию. Для этого я поочередно открываю каждый из этих файлов и в переменной $kod суммирую их информацию, а потом единовременно записываю эту инфу в создаваемый файл. Вот так:
<?php
$n_import = file_get_contents('n_import.txt');
for ($i = 1; $i <= $n_import; $i++)
{
$name_file = "tmp/" . $i . "_import.xml";
$kod_buff = file_get_contents($name_file);
$kod .= $kod_buff;
}
file_put_contents('import.xml', $kod);
|
Такой способ имеет тот недостаток, что требует слишком много памяти. А хотелось бы сделать так, чтобы инфа в переменной $kod не суммировалась, а будучи извлеченной из очередного файла сразу дописывалась в создаваемый файл.
Как это можно сделать? | |
|
|
|
|
|
|
|
для: Владимир55
(27.04.2013 в 11:05)
| | просто брать и сразу записывать :)
вне цикла отрываете файл для записи W
в цикле открываете файлы (имена которых можно брать например из массива и использовать foreach) для чтения R(n)
и во вложенном цикле копируете построчно из R(n) в W | |
|
|
|
|
|
|
|
для: Valick
(27.04.2013 в 11:40)
| | Меня волнует такой нюанс: будет ли замедляться запись по мере увеличения общего размера формируемого файла?
К примеру, добавляем сто раз по одному файлу размером 1 Мб. То есть, при записи последнего файла общий размер создаваемого файла будет почти 100 Мб.
Будет ли последняя запись длиться дольше первой?
И намного ли? | |
|
|
|
|
|
|
|
для: Владимир55
(27.04.2013 в 13:12)
| | Будет ли последняя запись длиться дольше первой?
теоретически нет | |
|
|
|
|
|
|
|
для: Владимир55
(27.04.2013 в 13:12)
| | >Будет ли последняя запись длиться дольше первой?
>И намного ли?
Этот эффект практически незаметен в случае файлов. Беспокоится стоит только в случае таблиц баз данных (если на момент добавления не отключаются индексы) - из-за того, что индекс приходится выстраивать после каждой записи бывают довольно длительные задержки. | |
|
|
|
|
|
|
|
для: Владимир55
(27.04.2013 в 11:05)
| | как вариант, делаете в цикле запись по кускам, каждый раз дописывая в конец файла
<?php
// ...
file_put_contents('import.xml', $kod_buff, FILE_APPEND);
// ...
|
| |
|
|
|
|
|
|
|
для: psychomc
(27.04.2013 в 11:40)
| | Спасибо! | |
|
|
|