Speed Up CSV Write To Disk¶
<?php
// Speedy yet memory intensive version
$f = fopen('php://memory', 'w+');
foreach($data_source as $row) {
// You may configure fputcsv as usual
fputcsv($f, $row);
}
rewind($f); // Important
$fp = fopen('final.csv', 'w+');
fputs($fp, stream_get_contents($f));
fclose($fp);
fclose($f);
// Slower version
$fp = fopen('final.csv', 'w+');
foreach($data_source as $row) {
// You may configure fputcsv as usual
fputcsv($fp, $row);
}
fclose($fp);
?>
When writing CSV files with fputcsv() function, PHP flushes each row to the disk. To speed up the process, it is possible to open a file in memory, with the php://memory wrapper, and write the CSV there. Then, it is possible to write down from memory down to the disk in one batch, saving a lot of disks flushes.
The same trick may be used to write any kind of files: write it quickly, in memory, and then, down to the disk in one batch.
See Also¶
fputcsv in loops [Try me]
PHP Features¶
Last updated: 14 July 2026