使用PHP输出缓冲在处理过程中发出JavaScript
Using PHP Output Bufferering to Issue JavaScript During Processing
我有一些接收和处理大型图像的PHP代码。我想在处理图像时在某些点上回显一些JavaScript,以使用jQuery更新DOM。这里有一些示例代码,但它不起作用。它只需等待整整5秒钟,然后使警报连续发生。我希望它立即进行第一次警报,然后在5秒后进行下一次警报。
ob_start();
echo '<script type="text/javascript">alert(''1...'');</script>';
ob_flush();
sleep(5);
ob_start();
echo '<script type="text/javascript">alert(''2...'');</script>';
ob_flush();
有人能帮忙吗?
大多数浏览器都会缓冲内容,直到达到一定的大小。试着用一些东西填充脚本块,使它们变长。
另外:您应该调用flush,而不仅仅是ob_flush,并确保zlib压缩已关闭。
我有一些接收和处理大型图像的PHP代码。我想在处理图像时在某些点上回显一些JavaScript,以使用jQuery更新DOM。
这可能超出了你必须完成的范围,但我会使用AJAX。你当然可以得到你想要发生的事情,但从长远来看,这种方法并不好。
使用AJAX请求上传图像并获得结果,而不是提交整个页面并等待它在爬网时返回。然后,客户端上的计时器可以发出单独的AJAX"你做了多远?"请求。这两个PHP实例将通过在数据库中的作业条目上设置"完成"标志等进行通信。
虽然它使客户端的东西更加复杂,但它更容易处理用户交互(例如允许用户取消长时间运行的作业),并使PHP代码更加集中。
将其添加到脚本顶部即可:
for ($i = 0; $i < ob_get_level(); $i++) { ob_end_flush(); }
ob_implicit_flush(1);
据我所知,ob_implicit_flush(1)
强制对每个输出语句进行刷新。因此其他ob_start()
和ob_flush()
调用将不是必需的。我不知道这对你是否有效。
<?php
for ($i = 0; $i < ob_get_level(); $i++) { ob_end_flush(); }
ob_implicit_flush(1);
echo '<script type="text/javascript">alert(''1...'');</script>';
sleep(5);
echo '<script type="text/javascript">alert(''2...'');</script>';
?>
以下在FF4中工作:
<?php
echo '<script type="text/javascript">alert("1");</script>';
flush();
sleep(5);
echo '<script type="text/javascript">alert("2");</script>';
?>
我很久以前就用类似的东西实现了一个聊天"服务器"。它起作用了。
这些东西对此没有帮助。
相关文章:
- JavaScript:如何在迭代过程中修改数组中的值
- 在asp.net页面中显示javascript执行过程中的加载图标
- Python Javascript哈希库,以确保JSON对象在传输过程中不会损坏
- 在拖动过程中释放鼠标时忽略 JavaScript mouseUp 事件
- 在创建视图mvc.net的过程中使用javascript
- 在异步函数调用过程中,当对象的属性值发生变化时,JavaScript中的对象属性值会发生什么变化
- 如何在grunt usemin编译过程中删除一些javascript
- 持续集成过程中的Javascript性能测试
- 存储过程中的Mongodb处理 - JavaScript中的BSON到JSON
- 如何防止 JavaScript 在构建过程中中断
- Javascript 函数创建自己的 ,但在此过程中删除网页上的所有其他
- Javascript - 记录用户在整个访问过程中按下给定按钮的时间
- 在 JavaScript MVC 中的构建过程中找不到生产.css
- 在超链接过程中使用带有javascript功能的django标记
- 为什么在参数传递过程中未评估javascript哈希对象
- 减法过程中的Javascript意外行为
- 在构建应用程序Javascript MVC的过程中,score/buildjs抛出了一个没有解释的错误
- 在regex拆分过程中会出现javascript未定义元素
- javascript处理过程中数组中的数组
- 是在Magento的单页签出过程中触发的JavaScript事件