前端控制器(app.php)为一个请求多次调用

前端控制器(app.php)为一个请求多次调用,php,symfony,front-controller,Php,Symfony,Front Controller,这是我的问题 形势 我正在调试symfony2应用程序(发布的数据有一些问题)。这次,我检查了在处理请求时app.php和app_dev.php被调用的次数 例如: 请求(来自浏览器):/demo/display/foos app.php(resp.app_dev.php)中的记录器: 它基本上在每次调用logtxt时在日志文件中添加一行 问题 在我的应用程序中,app_dev.php似乎在单个请求中被多次调用(大部分是2次或3次)。我尝试了一个空项目:app.php或app_dev.php只在

这是我的问题

形势

我正在调试symfony2应用程序(发布的数据有一些问题)。这次,我检查了在处理请求时app.php和app_dev.php被调用的次数

例如: 请求(来自浏览器):/demo/display/foos

app.php(resp.app_dev.php)中的记录器:

它基本上在每次调用logtxt时在日志文件中添加一行

问题

在我的应用程序中,app_dev.php似乎在单个请求中被多次调用(大部分是2次或3次)。我尝试了一个空项目:app.php或app_dev.php只在每次请求时被及时调用

我在考虑我将要做的重定向,但情况并非总是如此。更令人惊讶的是,对于同一个请求,app.php日志计数和app_dev.php日志计数有时会有差异

我不明白为什么在一个请求中要多次调用前端控制器。而且,它似乎对生产有一些影响。例如,在一个旧项目中,$\u POST在这些调用之间被重置,其数据似乎丢失了(!)

例如,对于同一个请求,我将在dev和prod envs中提供:

15:45:51 - in app_dev.php:
in app_dev.php ($post: {"sort":"sort","property":"barcode"})

15:45:51 - in foo Controller:
fooControllerAction called ($post: {"sort":"sort","property":"barcode"})
--------------------------------------------
15:45:52 - in app_dev.php:
in app_dev.php ($post: [])
--------------------------------------------
而对于app.php日志:

15:44:07 - in app.php:
in app.php ($post: {"sort":"sort","property":"barcode"})

--------------------------------------------
15:44:07 - in app.php:
in app.php ($post: [])
--------------------------------------------
15:44:07 - in fooController:
fooControllerAction called ($post: [])
--------------------------------------------
后果: 对于相同的请求,发布的变量可由控制器在dev环境中使用,但在prod环境中不可用:

解决方案

有人知道这种行为吗?我渴望了解证明这一点的背景,并检查它是否不会导致错误。此外,如果这是由于不好的开发实践,我会改变我的

提前感谢您分享您的智慧


干杯,

有关设置内核侦听器的信息,请参见本页:

。。。具体而言,本节将介绍请求侦听器:

这里有一个示例,说明如何检测请求是
子请求
还是
主请求
;)


当您检测到
HttpKernel::MASTER_REQUEST
作为您的请求类型时,您可以应用您在问题中显示的相同逻辑…

我认为
app_dev
app
之间的差异是由于多次调用调试工具栏和应用程序造成的。至于
app
本身,您的app是否包含
http
子请求?这可以解释多个调用…如何调用此方法?在你的
app.php
/
app\u dev.php
?如果是这样的话,我建议改为设置内核侦听器,然后探测类型请求(子请求/顶级请求),只记录您想要的请求……嗨,jperovic,谢谢您的反馈。关于调试工具栏调用的有趣想法。我确实在app.php/app_dev.php中调用了这个方法。我还不确定如何设置上述听众,但可以看看。嘿@Wisebes!我已经添加了一些关于如何创建内核侦听器的链接作为答案:)我推荐Laravel。谢谢!我马上去看看这个。另外,关于app.php和app_dev之间的日志计数差异的良好调用:由于分析子请求。虽然我对我的问题做了一些修改,但仍然有些神秘。这是很有帮助的,很好的方法。然而,在一个新项目中使用与上面相同的逻辑进行尝试,我仍然在dev环境中调用了两次MASTER_请求,在prod环境中只调用了一次:/Go进入config_dev.yml并关闭工具栏。我怀疑第二个请求会消失。猜得好。所以现在我对这些多重请求有了更好的理解。最后,只剩下所描述的问题(已编辑):似乎内核捕获的请求在提交给控制器之前就被搞砸了。。。然而,描述的主要问题现在已经解决了。这将在另一个线程中。
15:44:07 - in app.php:
in app.php ($post: {"sort":"sort","property":"barcode"})

--------------------------------------------
15:44:07 - in app.php:
in app.php ($post: [])
--------------------------------------------
15:44:07 - in fooController:
fooControllerAction called ($post: [])
--------------------------------------------