这是我的问题。
情况
我正在调试 symfony2 应用程序(发布的数据有一些问题)。这一次,我检查了在处理请求时 app.php 和 app_dev.php 被调用了多少次。
示例:请求(来自浏览器):/demo/display/foos
app.php 中的记录器(resp.app_dev.php):
//logger function
function logtxt($logtxt, $name='myLog'){
$fp = fopen($name.'.txt','a+');
fseek($fp,SEEK_END);
$newLog=date('H:i:s', time()).' - '.':'."\r\n".$logtxt."\r\n".'--------------------------------------------';
fputs($fp,$newLog);
fclose($fp); //basta
}
//logger call
logtxt('in app_dev.php ('.$_SERVER['SCRIPT_FILENAME'].')');
每次调用 logtxt 时,它基本上都会在日志文件中添加一行。
问题
看来,在我的应用程序中,app_dev.php 为单个请求多次调用(大多数是 2 次或 3 次)。我尝试了一个空项目:app.php 或 app_dev.php 仅在每次请求时按时调用。
我正在考虑我会做的重定向,但情况并非总是如此。更神奇的是,同一请求的 app.php 日志计数和 app_dev.php 日志计数有时会有所不同!
我不明白为什么要在请求中多次调用前端控制器。此外,它似乎对生产有一些影响。例如,在一个旧项目中,$_POST 在这些调用之间被重置,并且它的数据似乎丢失了(!)。
例如,对于 1 个相同的请求,我将在 dev 和 prod 环境中拥有:
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: [])
--------------------------------------------
结果:发布的变量可由控制器在开发环境中使用,但不能在生产环境中用于相同的请求:
解决方案
有人知道这种行为吗?我渴望了解证明这一点的背景,并检查它是否不会导致错误。另外,如果这是由于糟糕的开发实践,我会改变我的。
非常感谢您分享您的智慧!
干杯,