I want to export a BIG table to CSV, as it was impossible to select all data at once and export, I open a file handle for writing and call this function which takes a query and loops through different pages, I'm calling it with a page size of 20 which is actually small, but after a time of execution (maybe 30 minutes), it leads to this error:
Fatal error: Allowed memory size of 100663296 bytes exhausted (tried to allocate 85 bytes) in /usr/home/www/wp-includes/wp-db.php on line 1402
This is the function, $fichero is the alraedy opened file handle, $pagina_size had a value of 20 in last test:
function sql2csv_streamed($fichero, $sql, $pagina_size=50)
{
global $wpdb;
$limite1 = 0;
$limite2 = $pagina_size-1;
$sql_pagina = $sql . " limit $limite1,$limite2";
error_log($sql_pagina);
// Add all values in the table
while ($rsSearchResults = $wpdb->get_results($sql_pagina, ARRAY_A))
{
foreach ( $rsSearchResults as $res )
{
fputcsv ($fichero, $res , ";");
}
$limite1 += $pagina_size;
$limite2 += $pagina_size;
$sql_pagina = $sql . " limit $limite1,$limite2";
error_log($sql_pagina);
}
}
Thank you