2010-06-22 45 views
0

如何在cakephp中创建进度条?cakephp:执行进程/函数时向浏览器发送输出

和其他相关的问题是,

可以说,为一个循环,我怎么能发送输出到浏览器每次迭代..... CakePHP中.... 我试着用setflash功能,但没有为我工作......

我的主要目的是尝试以上的事情,是我想发送一些输出到浏览器每隔几秒,而我的功能正在执行,否则我会进入timout问题.....

谢谢...

回答

7

你不能这样做。返回的网页是静态的,当你发送它时你不能改变它。在纯PHP中,您可以在输出所有内容之前发送部分输出,因此您可以使用类似for($i=0;;) echo $i++;的东西,但是您不能在Cake中执行此操作,因为您需要在将视图插入到布局之前完整地呈现View。 进度条不可能是(纯的)HTML,因为如上所述,您无法修改发送的HTML响应。但是,您可以使用JavaScript:您可以使用JS返回一个HTML页面,该JS使用AJAX调用来查询动作的状态/百分比,然后分别在HTML中设置进度条。它可以做后者(修改HTML),因为JS在页面检索后在客户端的浏览器中运行。

+0

嗨西比迪巴,谢谢你的回复... 这里是我确切的概率,用户提交一个表单,并且虽然表单处理,我必须发送一些输出到浏览器,以保持服务器连接活着...所以如何wud我在cakephp中这样做了吗?我看到你在第一个回复中已经提到过它,但是我真的没有为我的情况得到它...... – texpert 2010-06-23 14:17:43

+0

可能的情况:首先,你必须通过AJAX提交表单。在服务器上执行期间,会更新包含状态(例如%)的会话变量。提交成功后,它会重新加载/重定向。第二:在提交和完成之间,你定期做一个单独的AJAX调用,从会话变量中快速返回当前状态。它可以更新元素以显示进度。 (会话变量由客户端Cookie标识,但数据是服务器端,数据库调用比较便宜,但不支持一致性良好。) – sibidiba 2010-06-24 00:37:11

+0

嗨,sibidiba,请你解释一下,我是如何制作的ajax调用,在上述情况下在cakephp中执行另一个ajax调用期间? – texpert 2010-07-01 14:35:58

1

你不能那样使用PHP(或CakePHP)。您可以使用AJAX PHP(或CakePHP)来做到这一点,但要解释这超出了本论坛的范围。谷歌“AJAX PHP进展”,并花时间学习如何做到这一点。

+0

嗨,利奥谢谢你的回复... 我知道答案可能超出了本论坛的范围,但如果你cud仍然详细阐述了一下,这可能会有所帮助..... 无论如何,我reaaly欣赏你的帮助... – texpert 2010-06-23 14:16:17

+0

尝试像这样: http://t.wits.sg/2008/06/25/howto-php-and-jquery-upload-progress-bar/ 我不明白你为什么'有保持活力的问题。 – Leo 2010-06-24 08:28:08

相关问题