2011-04-29 7 views
0

Webアプリケーションの入力に基づいて、さまざまなファイルタイプ(Excel、pdf、png)のレポートを生成する必要があります。アプリケーションは、Apache Webサーバー上でPHPで書かれています。Webアプリケーションのpdf、xls、pngファイルを生成する正しい方法

ATMユーザーがレポートセクションにアクセスすると、データベースに新しいデータが送信され、その情報に基づいて新しいレポートファイルが生成されるかどうかを確認するイベントが発生します。これにより、ファイルが生成されるまで待つ(3〜10秒)ので、何も良いアプローチではありません。私はあなたに私が与えることができる助言が必要です。

+0

これらのレポートを今作成するために使用しているのは何ですか。それは時間がかかりすぎて、それをスピードアップする方法を特定するために、あなたが使用しているツール/ライブラリを知る必要があります –

+0

@マーク・ベイカー:私はxlsファイルを生成するためにPHPExcelを使用しています。私はちょうどcvsファイルを生成するのがどれくらい簡単かを見てきましたが、私はより安価なアプローチを採用しようと考えています。 –

+0

@Nicolas:私の質問を編集するための質問:) –

答えて

2

もちろん、実際にはアプリケーションとシステムに依存しますが、私は通常、定期的にレポートを生成するPHPスクリプトを実行するcronジョブを持っています。出力はファイルシステムまたはデータベースに保存できます。このようにして、私のレポートは(ユーザーがダウンロードしようとするたびに)一度だけ生成され、必要なときに生成されます(スクリプトは、変更基準に基づいてレポートを生成する必要があるかどうかを確認できます。定期的に新しいレポートを生成するように設定してください)。本当にシンプルに保つには、現在のWebページをwgetまたはcurlで呼び出し、Webサーバー上に保存したレポートをダウンロードするための新しいページを作成します。

この方法の唯一の問題は、ユーザーが「古い」レポートをダウンロードする可能性があることです(データは変更されましたが、レポートは更新されていません)。これが本当に問題であれば、変更されたデータをチェックし、必要に応じてレポートを生成するバックグラウンドでPHPスクリプトを実行し続ける別の方法があります。

もう1つの方法は、ユーザーがレポートをダウンロードしようとしたときにレポートを生成し続けるだけで、結果をキャッシュすることです。独自のアプリケーション固有の基準を使用して、キャッシュされたレポートがすぐにダウンロードできるかどうかをチェックしたり、新しいレポートを生成してキャッシュしたりするかどうかを確認します。新しいレポートを定期的に生成することで、これを最初のアプローチと組み合わせることもできますが、ユーザーが古いレポートをダウンロードしようとすると、すぐに新しいレポートが生成されます(ユーザーは3-10秒待機します)。

最終的には、システムとアプリケーションによって異なります。

関連する問題