Zend框架操作被调用两次

时间:2009-04-06 12:28:27

标签: php zend-framework

我们正在尝试使用zend框架构建一个应用程序并遇到以下问题:“一些控制器操作被调用两次。这意味着操作被调用,完成执行然后再次被调用”。

我们通过检查日志文件中的条目来跟踪此情况。对于一个请求,日志文件中有2个条目。

你知道任何可能导致这个问题的事吗?这与前端控制器的调度过程有关吗?

此致

6 个答案:

答案 0 :(得分:5)

我发现当Chrome Extension Webug(Google Chrome的FirePHP扩展程序)启用时,请求操作两次。

答案 1 :(得分:2)

转发或动作堆栈可能是理由

答案 2 :(得分:2)

尝试使用调试器(例如XDebug)来查看代码的运行方式。 专注于调度程序,必须发生一些事情,并且请求操作未设置为已调度,因此会再次运行。

答案 3 :(得分:1)

这可能是一个错误。没有更多信息很难说清楚。

每次调用操作方法时,请尝试记录回溯。

<?php
trigger_error(var_export(debug_backtrace(), true));
trigger_error(var_export($_SERVER, true));
?>

这将在错误日志中提供大量信息,因此您需要将结果导出到文本编辑器并在那里进行操作。和/或可能修改代码以打印较少的信息。

要寻找的几件事情:

  • 是从不同的地方调用的动作方法吗?
  • $ _SERVER ['UNIQUE_ID'](或REQUEST_TIME)是否有所不同?

如果unique-id不同,那么您已经向服务器发出了两个请求。如果没有,请尝试从回溯中找出它。

答案 4 :(得分:1)

我们遇到了类似的问题。有些动作被执行了两次。经过大量调试和谷歌搜索,发现问题是ZFdebug中的一个错误。已安装this patch,一切恢复正常。希望这有助于其他人。

答案 5 :(得分:1)

我正在使用Chrome 17.0.x,Webug和Zend Framework 1.11.1,但仍然看到了这个问题。我按照建议禁用了Webug,并且只调用了一次Action。

所以,我认为这是Webug中的一个错误。