flashMessenger在长时间请求后添加消息时不起作用

问题描述 投票:6回答:2

我正遇到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)替换了长时间运行的过程,它产生了所描述的行为。问题是[[not由我为了隔离大小写而替换的代码引起的。这实际上是由于脚本运行时间长所致。我无法使脚本执行得更快。代替示例中的sleep(11),在生产代码中将某些内容发送到打印机,这需要约11秒才能完成。
  • 我面临着Zend Frameworks flashMessenger的一个非常奇怪的问题,无法找出问题的根源,也无法解决。当请求的操作花费很长时间时,...
  • php zend-framework php-5.4
    2个回答
    3
    投票
    两个示例都很好。如果sleep(11)不起作用,则可能是由于并发而产生副作用。 FlashMessenger基于会话,因此您必须检查会话配置。重定向器动作帮助器$this->_redirect();将发送标头并创建新的HTTP请求以产生新的整个调度过程。因此,您还必须检查已注册到此过程的插件(说明here)。

    -1
    投票
    我认为您应该使用js而不是php。
    © www.soinside.com 2019 - 2024. All rights reserved.