HRV や ECG などの大量の生体認証データが保存されている Oracle データベースがあります。各ユーザーのこのデータを Excel シートに表示する必要があります。しかし、このデータは非常に大きく、1 人のユーザーでも 1,00,000 を超えるレコードを取得しています。現在100~の利用者がいます。
私がやっていることは次のとおりです。
- Zendフレームワークで開発した同じコマンドラインを使用してCRONジョブを実行します。
- この CRON が重複しないようにします。
- 各ユーザーのOracleデータベースからすべてのデータを1つずつ取得し、これを配列に保存します。
すべてのユーザーのデータを取得したら、phpexcelライブラリを使用して Excel シートを生成しています。
Excelシートの構造
- uid 1/ uid/2 uid/3 ----------- nth
- データ |データ |データ |
- データ |データ |データ |
- | |
- n番目
問題 :
PHP は 1.5 GB の RAM を使用し、データを配列に格納し、それを関数に送信して phpexcel とやり取りしますが、このライブラリには 3 ~ 4 時間かかり、「Fatal : Memory limit」エラーが発生します。私のシステムには 2 GB の RAM しかありません。
このサイズのデータを処理し、同じ情報を Excel 形式で表示するようにコードを最適化するには、どのような手順を実行する必要がありますか、または RAM を増やす必要がありますか?