我们正在尝试使用zend框架构建一个应用程序并遇到以下问题:“一些控制器操作被调用两次。这意味着操作被调用,完成执行然后再次被调用”。
我们通过检查日志文件中的条目来跟踪此情况。对于一个请求,日志文件中有2个条目。
你知道任何可能导致这个问题的事吗?这与前端控制器的调度过程有关吗?
此致
答案 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));
?>
这将在错误日志中提供大量信息,因此您需要将结果导出到文本编辑器并在那里进行操作。和/或可能修改代码以打印较少的信息。
要寻找的几件事情:
如果unique-id不同,那么您已经向服务器发出了两个请求。如果没有,请尝试从回溯中找出它。
答案 4 :(得分:1)
我们遇到了类似的问题。有些动作被执行了两次。经过大量调试和谷歌搜索,发现问题是ZFdebug中的一个错误。已安装this patch,一切恢复正常。希望这有助于其他人。
答案 5 :(得分:1)
我正在使用Chrome 17.0.x,Webug和Zend Framework 1.11.1,但仍然看到了这个问题。我按照建议禁用了Webug,并且只调用了一次Action。
所以,我认为这是Webug中的一个错误。