2016-04-03 3 views
0

以前はうまく動作していたレポート生成PHPプログラムがあります。私はプログラムで2つのサードパーティのライブラリを使用しています:Googleの画像チャートライブラリ(私はURLで値を提供する場合は画像を返す)とtcpdf(PDF生成用)。私はクエリにmysqliではなくmysqlを使用しています。このページには多くのクエリとループがあります。TCPDFは40ページのpdfファイルを生成するのに10分かかります

レポートを生成するのに3分もかからなかった前に、ファイル生成が完了すると完了したメッセージを返すレポートを生成するためにajax呼び出しを使用しています。このプログラムは、pdfファイルをフォルダに保存し、同じ名前のリンクを使用してファイルをダウンロードします。

最近、正しく生成されていないことを確認しました。

エラーはTCPDFが画像を取得できませんでした。これは、画像を正しく返さないGoogleグラフライブラリが原因です。私はブラウザでグラフのURLにアクセスすると、問題なくイメージが表示されますが、イメージファイルの中にイメージファイルを置いても表示されません。そこで私はfile_get_contents、file_put_contentsのような関数を使ってファイルをフォルダに保存し、それをimage srcにリンクさせることにしました。この部分は正常に動作していますが、画像が見えます。

しかし、問題は、ローカル環境であっても、レポートを生成するのに多くの時間がかかることです。私は、チャートの作成なしにレポートを生成しようとしましたが、その時間がかかることもありました。その間には25分であり、今は40ページのPDFファイルを生成するのに10分近くかかっています。

なぜ私は本当にその時間がかかるのか分かりません。これのすべてはうまくいきませんでした。変更されたのは、Google画像の図書館のライブラリだけでしたが、今でも(その部分をコメントしてチェックしていても)その時間がかかることさえあります。

これをスピードアップするにはどうすればよいですか?遅いプログラムの部分を確認する方法はありますか?

試したxdebugですが、出力ファイルが400 MB以上で、webgrindが処理できません。

助けてください。

+0

この点で私たちにはあまりお答えできませんでした。詳しくは、編集を検討してください。 –

+0

今すぐご確認ください。ありがとうございました。 –

答えて

0

ソート済みです。

問題はデータベースであり、テーブルの1つに120000個以上のレコードが含まれています。無関係なレコードを削除しました。永続的な解決策ではありませんが、2.1分後には同じことが発生します。

私は本番サーバーで同じことをすることはできません。データベースを最適化する方法についてのご意見をお待ちしています。

ありがとうございました

+0

まだ十分ではありません。データを収集する 'SHOW CREATE TABLE'と' SELECT'を提供してください。 –

+1

これは、適切に選択されたMySQLインデックスで解決される可能性が高いです。サーバ内のデータに影響を与えずに、MySQLインデックスを追加、変更、および削除できます。このhttp://use-the-index-luke.com/を読んで、それでも助けが必要な場合は別の質問をしてください。 Rick氏のように、パフォーマンスの低いクエリ、テーブル定義、EXPLAIN結果を与える必要があります。これらのクエリから –

1

次の手順は、パフォーマンスのトラブルシューティングです。

TCPDFは何もしなくても大丈夫ですか?おそらく、TCPDFの著者は、パフォーマンスを向上させるためのヒントを見て、それらを実践しました。 http://www.tcpdf.org/performances.php

あなたのMySQLクエリの中には、非効率的なものがありますか? phpMyAdminまたは同様のコマンドラインツールを使用して、MySQLサーバとの対話型接続を取得します。あなたのPDF作成プロセスが実行されている間、繰り返しこのコマンド

SHOW FULL PROCESSLIST 

それは各接続のアクティブなMySQLのクエリを示すINFO列を提示を発行します。また、各クエリの経過時間はミリ秒でtimeです。数百ミリ秒間実行されるクエリがある場合は、MySQLの EXPLAINコマンドを使用してこれらのクエリを分析することを検討してください。多くの場合、MySQLテーブルに適切なインデックスを追加すると、処理速度が飛躍的に向上します。

あなたのPDFプログラムを実行しているマシンはRAMで短くなっていますか? * nix topやWindows perfmonのようなパフォーマンスモニタを使用してください。

あなたの40ページのレポートは、作成するだけで巨大な仕事ですか?もしそうなら、PHP + TCPDFより速いレポート生成プログラムに切り替えることを検討するかもしれません。

+0

こんにちはOllie、 私はhttp://www.tcpdf.org/performances.phpに記載されているすべてのポイントを考えましたが、まだ運がありません。 MySQLの部分私はあなたの提案を試す必要がありますが、これらのクエリも前にそこにあった。ありがとう –

関連する問題