Я хочу непрерывно писать сотни записей в разных файлах с time()
,
Этот код работает хорошо, но записывает только 1 запись в каждый файл. Как я могу это сделать?
$i=0;
$file= time();
foreach ($dizi as $fields) {
$i++;
if($i%100==0){
$fp = fopen($file.'.csv', 'w');
}
fputcsv($fp, $fields,';','"');
fclose($fp);
}
Я считаю, что ваше поведение происходит, потому что вы закрываете файл после первой записи и никогда не открываете его снова, пока не получите 100-ую запись.
Я думаю, что лучший способ сделать то, что вы хотите, это открыть первый файл за пределами цикла, и если получится до 100 записей, закройте и откройте новый файл.
Попробуйте что-то вроде этого:
$i = 0;
$fp = fopen(time(). '.csv', 'w');
foreach($dizi as $fields) {
$i++;
if ($i % 100 == 0) {
fclose($fp);
$fp = fopen(time(). '.csv', 'w');
}
fputcsv($fp, $fields,';','"');
}
fclose($fp);
Обратите внимание, что если $dizi
пуст весь этот код, можно избежать или будет создан пустой файл.
Других решений пока нет …