-6

我有一个看起来有点像这样的循环的 scipt

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

我面临的问题是,只要循环正在运行,php 代码就不会继续加载页面的其余部分([更多代码])。我该如何解决这个问题?任何指针?

我正在执行的循环是从 MYSQL 数据库中获取数据、下载和保存图像。之后,它正在删除临时 MYSQL 数据。

但是循环所做的并不重要,IMO 每个循环都会阻塞正在进行的代码,直到循环完成。

所以我的问题是,是否有可能执行循环,但也可以在代码中继续?如果没有(我在想什么),是否有任何合乎逻辑的解决方案我可以解决这个问题,因为我想在这个页面上加载两个“代码块”。我认为将代码拆分为 2 .phps 并将其分开将面临同样的问题。

4

2 回答 2

3

你可以试试:

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

但是如果“更多代码”依赖于“大循环”,那么你就有问题了。这里有一些想法:

  • 优化您的循环。您的循环中可能存在某种严重的低效率。
  • 少做点工作。也许你不需要处理整个大循环,可以少做一些处理。
  • 缓存您的结果。如果经常执行相同的循环并产生相同的结果,也许您可​​以将结果保存在 file/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 回答