2012-03-09 22 views
1

私は倉庫管理システムを作成しています。1ページに多くの画像が読み込まれていません

午前中に注文がCSV形式で送られ、スクリプトが実行されます。

各注文の上部にphp製バーコードを配置します。私が使用しているサンプルCSVは約100個のユニークな注文を受けているので、サーバーから注文をプリントするページをロードすると100以上のリクエストがあり、イメージの一部がタイムアウトします。

私がソースを表示して、動作しないものへのリンクを開くと、画像がロードされ、何らかの形でブラウザのタイムアウトメソッドを無効にする必要があると思うようになります。

私の唯一のアイデアは、javascriptでバーコードを読み込むことです。

提案がありますか?

+1

これらの注文ページをすべて生成する1つのスクリプトを読み込み、それぞれに独自のバーコードがあります。イメージが失敗し始めると、彼らは失敗し続けますか? – enygma

+0

php.iniのmax_execution_timeとは何ですか? – Milap

+0

ブラウザで画像をプリロードするのは、画像が表示されているページを表示するのですか? Googleの画像プリローダーのJavaScript。 – epascarello

答えて

0

私はenygmaが得られるかもしれないと思うのは、限られた処理時間PHPスクリプトです。ときには30秒後に切断されることもあります。一度にすべてのイメージを生成すると、サーバー上でスクリプトが強制終了され、データの送信が停止される可能性があります。一度にいくつかしかやっていないか、連続してやっている限り、javascriptでそれらを読み込むあなたのアイデアはおそらくあなたの最善の策です。

0

phpでセッションを開始すると、セッションはロックされ、解放されるまで別のPHPスクリプトからアクセスすることはできません。

あなたがphpで画像を生成していることによると、それはあなたの目に見える原因の可能性が高いです。

other questionsには、PHPとセッションの仕組みの詳細が少し詳しく記載されています。ほとんどの場合、画像の一部が受信されないという直接的な原因です。各スクリプトはセッションを読み取り、終了するまでセッションを解放しないため、要求は単一のシリアルキューに順番に処理されます。待ち行列の終わりの要求は、一方向または他の時間制限に達し、何も戻されません。

したがって

、あなたが呼び出すことを確認してください。

session_write_close(); 

をできるだけ早くすることができますように他のすべてのPHP要求をブロックすることを防ぐために、セッションへのアクセスを必要とするすべてのスクリプトで、またはより良いまだ使用していません(例えば、あなたが認証のためにセッションを使用している場合は、URLにハッシュを入れて、イメージリクエストのハッシュ値と比較するだけです)。