• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:GDを沢山出力できない)

GDを沢山出力できない

このQ&Aのポイント
  • GDを使用してイメージを生成し、複数の画像を表示する際に表示できなくなる現象が発生しています。
  • 表示できない画像の数に制限があり、サイズが600*36の場合は約28個、サイズ40*30の場合は約50個まで表示できますが、それ以上の画像は表示できません。
  • メモリを増やしても現象が改善しないため、他の原因が考えられます。OSはRedHadLinuxで、PHPとGDのバージョンは4.2.2(GD1.6.2)および4.4.2(GD2.0.28)です。ImageDestroyも正しく行われています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ちょっと観点を変えてみますが 表示できる端末があるのであれば 表示端末固有の問題かもしれませんね。 表示ができなかった端末のブラウザキャッシュを無効にしてみてはどうでしょうか。

mentaiko2
質問者

補足

別の端末から表示できるというのは60個の画像が表示できるのではなく、サーバーにアクセスできるという意味です。 混乱させてしまって申し訳ありません。 IE6、FireFoxでほぼ同じ現象です。 また、2台で同時にアクセスをしたときの表示も一台でアクセスしたときと変わりません。 メモリの関係だと単純に考えて2台同時の場合は負荷が倍になりますがそのような感じもしません。 キャッシュはインターネットプロパティでページを表示するごとに確認するになっているので古いものは見ていないと思います。 Apache,PHPの設定でメモリ関係はmemory_limit以外にあるのでしょうか?? よろしくお願いいたします。

その他の回答 (1)

回答No.1

おそらく、サーバー側の処理が追いついていないからだろ思うんですが 1つのHTMLに60個近くの画像を載せる場合は立て続けにリクエストが発生することになりサーバーには大きな負荷がかかります。 私も以前似たような問題で引っかかった事があるんですが 結局はサーバーの負荷軽減の為に動的出力を行うのではなく サーバーでcron等を使い定期的に動的画像を静的画像として吐き出しhtmlで表示する。 というシステムで落ち着きました。 メモリリミットを変えて利用できるメモリはシステムがどれだけPHPに 割り当てているかでも関わってくると思いますし <img src を吐き出すPHPも同時呼び出される確率もあるはずですから サーバーにはかなりの負荷がかかり現実的ではありません。 静的出力に切り替えてみてはいかがでしょうか。

mentaiko2
質問者

補足

早速の回答ありがとうございます。 残念ながらスケジュールを画像にして最大150ユーザ分出しているので静的で画像を保存しておくことが難しいです。(日付を移動できるのとユーザを自由に組合わせないとならないので) 調査していてわかったことですがWin環境だと起きません。 WinXP でphp4.3.6、GD2.0.28 php.iniのmemory_limitは25Mでまったく問題なく表示できています。 また、真っ白い画面になってしまったときにすでに真っ白になっているマシンから別ウィンドウでアクセスすると真っ白ですが、別マシンからアクセスすると表示できることもわかりました。 質問のように一回の画面で沢山表示する場合もうまくいきませんが、一個の画像を表示してリロードを繰り返しても同じ状況になることがわかりました。(セキュリティー上リロードの回数を限定していることはありません。GDに無関係なphpページは何回でもリロードできました。) メモリが怪しそうですがほかが原因があるのかも知れません。 提示しなければならないものがありましたら教えてください。