2

ie に大量のデータ (約 1000 万レコード) があり、.csv でエクスポートしようとしていますが、完全に機能せず、ページが継続的に読み込まれ、空白のページが表示されます。をファイルに設定max_execution_timememory_limitましphp.iniたが、まだ機能していないため、さまざまなアプローチを試みましたが、成功しませんでした。

CodeIgniter では、配列を次のように CSV ライブラリに使用しました。

$this->load->helper('csv') and also built in function

$this->load->dbutil()

それでもうまくいかない、

したがって、この大量のデータを問題なく管理してCSVファイルをエクスポートする方法を考えてください。

4

5 に答える 5

0

何を達成したいのかわかりませんが、 set_time_limit を変更することはお勧めできません。これにより、実行中のスクリプトが発生する可能性があり、x 時間ごとにスクリプトを呼び出すと、しばらくしてサーバーがクラッシュします。

しかし、私が理解しているように、ユーザーの csv ファイルを生成したいと考えています。あなたが今やっていることは、(おそらく) ユーザーがリンクにアクセスし、csv のレンダリングを開始することです。

(javascript を使用して) できることは、リンクをクリックすると進行状況バーが開始され、バックグラウンドでファイルのレンダリングを開始することです (終了時に電子メールを送信することもできます)。このようにして、ユーザーは引き続きシステムを使用できます。また、ユーザーはリロードを押さないため、複数の csv のレンダリングを開始できます。

次に、フレームワークがわかりませんcodeigniter。ネイティブ関数は常に高速です。ただし、1.000 行以上をレンダリングする必要がある場合は、おそらく負荷の共有を検討できます。つまり、100 をロードし、100 行を挿入し、100 をロードし、100 を挿入します。

このヒントが役立つことを願っています

編集 --- いくつかのコード例 ---

少し時間がかかりましたが、上記のコード例をいくつか示します。

最初に、csv が存在するかどうかを x 秒ごと (この例では 60 秒) (つまり 1 分ごと) にチェックします。ファイルが存在するかどうかを確認するには、このstackoverflow anserを使用し、単純な JavaScript 間隔を追加するだけです。

var checkFile = self.setInterval(function(){checkFile()},60000); // interval uses milli seconds as far as I know

function checkFile() {
    if (UrlExists(url)) { // url exists is the function of the answer given
        checkFile = window.clearInterval(checkFile);
        // add other stuff to do
    }
}

このコードを使用すると、ファイルがレンダリングされているかどうかを確認できます。レンダリングされている場合は、ユーザーなどにメッセージを設定できます

于 2013-10-14T08:56:24.800 に答える
0

データベースからのデータを含む CSV ファイルをエクスポートするための簡単なソリューション.. 以下のリンクに従ってください..

http://writephp.tuxkiddos.com/2013/02/export-to-csv-ci-helper-file.html https://gist.github.com/opnchaudhary/4744797#file-csv_helper-php for GitHub リンク

于 2014-01-15T05:51:33.680 に答える