一回も披露したことのない豆知識

PHP,MySQLを用いた検索システムを作るにあたり、検索結果に画像を用いるということをしています。
具体的には、検索結果としてサムネイル画像がズラッと表示されるというものです。
(10件ごとに表示し、ページングさせる。)

DBには画像のパスを格納しているのですが、ところどころ画像が表示エラーをおこしてしまいます。

リロードすると表示されますが、また別のところが表示エラーになったりします。
ランダムに表示エラーが起きてしまうのです。

出力ファイルをブラウザで確認すると、全てきちんと出力できているのですが、検索の流れの中でエラーが起きるということになります。

格納したパスが間違えているということでもないので、サイトのレイアウト上の問題なのかなと思うのですが、原因がいまいちわからずにいます。

エラーの原因としてどういった可能性が考えられますでしょうか。

アドバイスをご教示いただければ幸いです。

A 回答 (3件)

こんにちは。



サーバ側のエラーとはApacheのエラーログ等の事です。
まずは調査したい部分です。

また、画像取得用のスクリプトを噛ませている理由はありますか?
外から見えない場所に画像ファイルがあるのでしょうか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

解決致しました。

LancerVII様の画像取得用のスクリプトを噛ませる理由は?と聞かれ、そういえばと思いました。

パスをDBに格納したのに、画像取得用ファイルをわざわざ噛ませる必要がありませんでした。

画像取得用ファイルを噛ませて出力するという流れを使ってみていたことによる凡ミスでした。

ありがとうございます。

お礼日時:2013/03/12 15:05

>具体的には、検索結果としてサムネイル画像がズラッと表示されるというものです。



この時点でimg要素にはDBから「ファイルのパス」を書き出していますか?それともimg要素にはphpスクリプト+データ番号などを書いていて再度そのスクリプトで画像データを返しているのでしょうか?

前者であればほとんどエラーになる要因が考えられません。返したimg要素を元にブラウザが画像を「静的に」取得するだけなのでhtmlソースさえ正しければ問題ないです。後者であればスクリプトが連続して起動されてDBにアクセスしますから、負荷的な問題はありそうには思います(とはいえ10件程度のアクセスでキチンと返せないのはどうかとも思いますが・・・

この回答への補足

ご回答ありがとうございます。

表示については、以下のようなコードを検索結果に埋め込んでいます。
<?php echo '<img src="getimage.php?id=' . $row['id'] . '" width="" height="">' ?>

そしてgetimage.phpは、

~DB接続等省略~
$img_path = $row['image'];
$img = file_get_contents($img_path);
header('Content-type: image/jpg');
echo $img;

という内容で書きました。

agunuz様のご指摘にありました後者の問題なのかなと私も考えておりますが、10件表示で?という疑問もあります。

補足日時:2013/03/11 21:02
    • good
    • 0

こんにちは。



サーバ側のエラーメッセージは見ることが出来ますか?
10件だから考えにくいかもしれませんが、サムネイルの取得が連続するためにサーバ側で処理しきれてないとか。

この回答への補足

ご回答ありがとうございます。

画像の部分にはエラーメッセージは出ていないのですが、画像のような小さいアイコンが斜めに亀裂が入ったようなものは表示されています。

出力用のファイルを噛ませているので、もしかしたらサーバーへの負荷の問題が一番濃厚なのかなと考えています。

補足日時:2013/03/11 20:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!