-6

私はこのようなループのあるsciptを持っています

[CODE]  [BIG LOOP] [SOME MORE CODE]

私が直面している問題は、ループが実行されている限り、phpコードが続行されず、ページの残りの部分([SOME MORE CODE])が読み込まれないことです。この問題を回避するにはどうすればよいですか?ポインタはありますか?

実行中のループは、MYSQLデータベースからデータをフェッチし、画像をダウンロードして保存することです。その後、一時的なMYSQLデータを削除します。

しかし、ループが実行しているのは重要なIMOではありません。ループが完了するまで、すべてのループが進行中のコードをブロックします。

だから私の質問は、ループを実行するだけでなく、コードで続行する可能性はありますか?そして、そうでない場合(私が考えていること)、このページに両方の「コードブロック」をロードしたいので、これを回避するための論理的な解決策はありますか?コードを2つの.phpに分割し、それを分離して含めると、同じ問題が発生すると思います。

4

2 に答える 2

3

あなたは試すことができます:

[CODE]  [SOME MORE CODE]  [BIG LOOP]

しかし、「もう少しコード」が「大きなループ」に依存している場合は、問題があります。ここにいくつかのアイデアがあります:

  • ループを最適化します。ループにある種のひどい非効率がある可能性があります。
  • 作業を減らします。たぶん、大きなループ全体を処理する必要はなく、処理を少なくすることができます。
  • 結果をキャッシュします。同じループが頻繁に実行され、同じ結果が生成される場合は、結果をファイル/ APC / memcachedに保存できますか?
  • AJAXを使用します。大きなループからのデータなしでページをロードし、次にそのページにAJAXを使用して必要なデータをロードさせます。あなたは素敵なページを提示することができます'私たちがあなたのデータを取得するまでお待ちください'メッセージ/アイコン/何でも。
于 2012-11-20T22:55:08.417 に答える
0

[BIG LOOP]結果を計算する必要があり、その前にHTMLに表示する必要がある場合[SOME MORE CODE]:回避策はありません。私はこれを言っています[CODE=HTML] [BIG LOOP=PHP] [SOME MORE CODE=HTML]。それ以外の場合は、より正確に(またはコードを指定して)ください。「ページの残りの部分をロードする」とは、「HTMLページをロードする」という意味ですか?その場合、すべてのPHPコードがすでに実行されている必要があります。おそらく別の方法で進める必要がありますが、考えられるトリックは次のとおりです。

[CODE] [DIV FOR AJAX]  [SOME MORE CODE] [AJAX INSTRUCTION TO LOAD RESULT OF BIG LOOP IN DIV]

これは、PHPプログラミングの観点からおそらく少し残忍になるための本当に賢い方法です!

于 2012-11-20T22:59:22.853 に答える