2

何千ものレコードをエクスポートしたいのですが、CSV にエクスポートするレコードが 165,000 あるとします。私がやっていることは、すべてのレコードを取得して配列に入れ、fputcsv()関数を使用して CSV にエクスポートすることです。しかし、そうすると私のページがクラッシュします。私も設定set_time_limit(0)しましたが、どちらも機能しません。これが私がやっている方法です:

QUERY-> SELECT s.id, 
               s.name, 
               s.email, 
               s.postcode, 
               s.dob
        FROM `subscribers_table` s
        WHERE s.status=1";

while(row = fetch..) {
    $myarray[] = array_data
}

$fp = fopen(..);
foreach($array as $key => $value)
    fputcsv($fp, $value);           
fclose($fp);

どんな助けでも大歓迎です。

4

2 に答える 2

0

どのようなエラーがありますか? どうやらメモリオーバーフローのようです。php.ini の「memory_limit」ディレクティブをより大きな値に設定します。

また、やりたいことは MySQL だけで実行できます。

SELECT s.id, 
       s.name, 
       s.email, 
       s.postcode, 
       s.dob
   INTO OUTFILE 'c:/somefile.csv'
   COLUMNS TERMINATED BY ' '
   LINES TERMINATED BY '\n'
   FROM `subscribers_table` s;
于 2013-09-13T08:34:03.790 に答える
0

これはあなたがしていることの解決策ではありません. 私の解決策は、dbプロセスから制限された量のデータを取得し、ページネーションで単純に発生するようにデータ量に戻すことです。

于 2013-09-13T09:21:46.813 に答える