【问题标题】:print some of the result while loading加载时打印一些结果
【发布时间】:2012-05-22 09:27:38
【问题描述】:

我不知道这是 PHP 还是 APACHE 的问题,但我想打印一些结果,即使脚本仍在运行。

我的意思是,因为我的 for 循环是一个长脚本,我想在那个 for 循环上打印一些完成的结果。但实际情况是,它只会加载页面,不回显任何内容,并且会在脚本加载完成后立即显示内容。

附:那是在使用 wamp 时...当我在我的网站上在线加载脚本时,它会打印一些结果并添加更多结果,直到脚本完成加载。

【问题讨论】:

  • 页面没有HTML代码,纯PHP
  • 你的输出可能被缓冲了
  • 如果输出被缓冲了怎么办?我应该编辑 php.ini 还是 httpd.conf?或者只是在我的 php 脚本中添加一些代码?
  • 谢谢你 Musa,我搜索了输出缓冲,我刚刚在我的 php.ini 上关闭了输出缓冲。现在一切都设置好了。非常感谢。

标签: php apache


【解决方案1】:

如果你有输出缓冲,那么添加

ini_set("implicit_flush", "1");

在脚本的开头将其关闭,这只会影响它所在的​​脚本。
如果您想在 php.ini 中将整个站点设置为output_buffering = Off 将其关闭
您也可以在您的 .htaccess 文件中执行此操作。

【讨论】:

  • 如果关掉了,应该加哪一行?只需将 1 更改为 0?
【解决方案2】:

在单独的脚本中完成所有长时间的工作并使用 AJAX 加载所需的内容,您也可以将加载部分分成几部分。 jQuery.get 是启动http://api.jquery.com/jQuery.get/ 的最简单方法

示例代码会将数据加载到具有id=result的元素中(当然你需要包括jQuery http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery

$.get('long_script.php', function(data) {
  $('#result').html(data);
});

当然,这比在循环中回显结果要困难一些,但这保证适用于任何服务器/浏览器设置,并且在长时间任务期间加载整个页面,而不是无论如何限制你在 html /css 用法

【讨论】:

  • 在这种情况下,不使用 Apache 从命令行运行 php 可能是一种选择(但也许不是,这取决于你需要什么)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-25
  • 2016-10-04
  • 2015-12-06
  • 2020-02-19
  • 2014-06-05
  • 1970-01-01
  • 2018-10-16
相关资源
最近更新 更多