3

というファイルを介して画像を動的にロードするページがありますthumb.php

このファイルは、大きな画像ファイルを受け取り、サムネイルを作成し、次のように jpg を出力します。

<img src="thumb.php?width=100&height=100&cropratio=1:1&image=/photos/45_Jumps-059.jpg" />

サーバーに問題があり、約 60 のリクエスト (すべての画像に対して thumb.php を 60 回以上要求) に達すると、サーバーから返される応答は次のようになります。

Remote server closed the connection before sending response header

画像の読み込みに失敗します。

これは、apache や php のメモリ不足か何かのようなものですか? 再び動作を開始する前に、サーバー全体が約 1 分間停止します。

4

1 に答える 1

1

問題は、Apache の最大接続制限である可能性が最も高いです。同時接続数が多すぎる場合にサーバーが機能し続けることができるように設定されています。簡単に構成できますが、共有ホストにいると述べているため、これを変更できる可能性は低いです.

あなたのシナリオでは、ページの読み込み時にいくつかを読み込むことで画像リクエストを分散し、JavaScript を使用して読み込みが完了したときに画像を追加します。JQuery の例 (未テスト):

<img src="" data-src="thumb.php?width=100&height=100&cropratio=1:1&image=/photos/45_Jumps-059.jpg" />
<img src="" data-src="thumb.php?width=100&height=100&cropratio=1:1&image=/photos/46_Jumps-059.jpg" />
<img src="" data-src="thumb.php?width=100&height=100&cropratio=1:1&image=/photos/47_Jumps-059.jpg" />

<script>
    $("img[src='']").load(function() {
       var next = $("img[src='']:first");
       next.attr('src', next.data('src');
    });
    var first = $("img[src='']:first");
    first.attr('src', first.data('src');
</script>
于 2013-10-06T20:25:58.023 に答える