PHP не может записать большие данные в файл csv - PullRequest
0 голосов
/ 29 мая 2020

Я использую код PHP для экспорта данных в файл CSV из таблицы (базы данных).

Но, к сожалению, он пишет всего 98000 строк, а у меня всего 198000 строк в таблица.

Я думаю, что общий объем данных в таблице составляет до 34 МБ.

И второе, как я могу автоматически загружать после завершения записи файла. Кто угодно может помочь спасибо.

$que = "SELECT * FROM campaign";
$query = mysqli_query($connection,$que);
$number_rows = mysqli_num_rows($query);

if ($number_rows >= 1)
{
    $filename = "exported_db_" . date("m-d-Y_hia") . ".csv"; // filenme with date appended
    $fp = fopen($filename, "w"); // open file

    $row = mysqli_fetch_assoc($query);

    $seperator = "";
    $comma = "";

    foreach ($row as $name => $value)
    {
        $seperator .= $comma . $name; // write first value without a comma
        $comma = ","; // add comma in front of each following value
    }
    $seperator .= "\n";

    echo "Database has been exported to $filename";

    fputs($fp, $seperator);

    mysqli_data_seek($query, 0); // use previous query leaving out first row

    while($row = mysqli_fetch_assoc($query))
    {
        $seperator = "";
        $comma = "";

        foreach ($row as $name => $value)
        {
            $seperator .= $comma . $value; // write first value without a comma
            $comma = ","; // add comma in front of each following value 
        }

        $seperator .= "\n";

        fputs($fp, $seperator);
    } 

    fclose($fp);

}
else {
    echo "There are no records in the database to export.";
}

1 Ответ

0 голосов
/ 29 мая 2020

Когда я помещаю эти две строки кода в начало файла, я получаю правильный результат.
Я думаю, что этот код увеличивает размер caches_memory и время выполнения.
Спасибо всем за комментарии и обсуждение.


ini_set('memory_limit', '512M');
ini_set('max_execution_time', '180'); 

...