我有一个网站,它使用 eBay API 将所有内容加载到 eBay 和其他所有内容中。
主要文件是PHP,它们只包含在一个文件中,该文件在需要时调用脚本。
但是我现在要做的是创建一个简单的网站,该网站将被拆分为中间一半包含指向脚本的链接,另一半是一个普通的空div,它从PHP文件中加载内容并将其显示在空div中。
由于 php 文件大多在循环上运行并且可以运行长达 5 分钟,我希望脚本能够回显它在空div 中所做的工作。
目前我正在使用
while (@ob_end_flush());
ob_implicit_flush(true);
所以 PHP 脚本在文件末尾之前输出 echo,但在使用时:
function loadScript() {
$(".loading").load("load.php");
Loaddelay = setTimeout('loadScript()',1000);
}
loadScript();
在主索引文件中,每 1 秒重新加载一次文件,但不显示任何内容。 因为脚本实际上无法运行。
我还有哪些其他选项可以动态更改div 容器,使其包含正在运行的 PHP 脚本?
如果信息不是机密或敏感的,您可以做的一件事是将执行需要时间的脚本输出通过管道传输到文件,并使用jQuery.load()从页面读取该文件。
所以你会:
- 定义
- 服务器和页面的 JavaScript 都知道的会话变量(这将定义内容将输出到的文件名)
- 使用 jQuery.ajax() 开始执行长 PHP 脚本
- 以预定义的时间间隔读取文件(名称已在前面定义),就像在当前脚本中一样
- 当长脚本结束时,在文件末尾编写一些特殊字符,以便停止从客户端读取文件
请注意,如果用户要同时执行多个页面,则需要优化定义会话变量的方式
最后我意识到我实际上不需要像以前那样使用 jQuery 来加载页面。
我最终使用了放置在div 中的 iframe。
<a onclick="loadThis('page.php')">Do some thing</a>
<script type="text/javascript">
function loadThis(file) {
$("myiframe").attr("src", file");
}
</script>
它工作正常,比预期的要好。 不敢相信我忽略了使用iframe。