【发布时间】:2014-05-08 00:15:13
【问题描述】:
Zend Frameworks flashMessenger 遇到了一个非常奇怪的问题,我不知道问题的原因是什么,也不知道如何解决。
当请求的操作需要很长时间时,flashMessenger 不会按预期工作。
无效示例:
class AttachmentController extends Zend_Controller_Action {
public function printAction() {
// action takes really long and causes flash message to not appear at all
sleep(11);
$this->_helper->flashMessenger
->setNamespace('success')
->addMessage("It's done!");
$this->_redirect('/attachment/index');
}
}
使用上面的代码,/attachment/index后面的控制器动作不会显示flashMessage。
但是,如果我减少脚本的运行时间,它会起作用:
class AttachmentController extends Zend_Controller_Action {
public function printAction() {
// now the action runs faster and the flashMessage appears!
sleep(1);
$this->_helper->flashMessenger
->setNamespace('success')
->addMessage("It's done!");
$this->_redirect('/attachment/index');
}
}
问题:flashMessenger 不显示我的消息的原因可能是什么?我该如何解决?
注意事项:
- 是的,我确定这就是问题所在。我在生产代码中用
sleep(11)替换了长时间运行的过程,它产生了所描述的行为。问题是不是由我为隔离案例而替换的代码引起的。确实是脚本运行时间过长造成的。 - 我无法让脚本执行得更快。代替示例中的
sleep(11),在生产代码中,某些内容被发送到打印机,大约需要 11 秒才能完成。
【问题讨论】:
-
任何想法表示赞赏!
-
flashMessenger中有什么内容?addMessage是做什么的?写入数据库或会话?var_dump()和exit是你的朋友 =) 我在FlashMessenger中找不到addMessage() -
我对您的 ZF2 API 参考和 ZF2 标签感到困惑。你的代码看起来像 ZF1!
-
FlashMessenger 是基于会话的,请检查您的会话配置。我敢打赌这两个例子都很好。添加后请转储消息容器,您将看到两个示例都可以正常工作
-
@Mamuz 我明天会测试这个。我还假设在两种情况下添加消息后都会出现在容器中。问题是它没有显示在下一页上,好像该消息已过期以等待更长的运行请求
标签: php zend-framework php-5.4