十分に広い日付範囲が与えられた場合、30,000を超えるレコードを生成できるレポートがあります。HTML側から見ると、これほど大きな結果セットは問題ではありません。これは、特定の時間に表示可能な結果を100に制限するページ付けシステムを実装しているためです。
私の本当の問題は、ユーザーが「PDFを取得」ボタンを押すと発生します。これが発生した場合、基本的に、データを出力するレポートの部分を再実行し(レポート自体の結果は「保存」テーブルに格納されるため、データ収集ロジックを再実行する必要はありません)、保存します。結果は、と呼ばれる変数になります$html
。この変数には、30,000レコードのデータと、PDFで正しくフォーマットするために必要なHTMLが含まれていることに注意してください。このHTML文字列を作成したら、それをTCPDFに渡して、ユーザーのPDFファイルを生成しようとします。ただし、PDFファイルを生成する代わりに、エラーメッセージ(「PDfの生成...」)ダイアログが消えて、システムは何も要求しなかったように動作します。
テストを通じて、問題は$html
渡される変数のサイズにあることがわかりました。3Kレコードのレポートの場合は、正常に機能します。それ以上の場合、レポートのHTML側は印刷されますが、PDFは印刷されません。
役立つ情報
- PHP 5.3
- PDF生成用のTCPDF(PS2PDFも試してみました)
- スクリプトのメモリ制限:500 MB
このサイズのPDFを生成するときに、この規模のデータをどのように処理しますか?