为什么Symfony 2在我的环境中响应速度很慢?

Hub*_*bro 7 php apache vmware symfony symfony-2.2

我有一台运行Debian Squeeze的VMware虚拟机.我的所有项目都在我的Windows机器上的一个文件夹中,可以通过VMware共享文件夹访问Debian VM.这意味着我可以在我的Windows机器上使用适当的文本编辑器处理我的项目,同时从Linux环境托管它们.几个月来我一直在使用这个设置,在使用PHP或其他与开发相关的任务托管Apache站点时没有问题,直到我试用了Symfony.

我现在在我的htdocs目录中有一个Symfony 2(Symfony_Standard_Vendors_2.2.1.tgz)的开箱即用演示实例,以及我的Windows机器上与VM共享的一个实例.我的htdocs目录如下所示:

htdocs
|`- Symfony
 `- Symfony_shared -> /mnt/hgfs/Dropbox/Symfony
Run Code Online (Sandbox Code Playgroud)

Symfony是位于htdocs文件夹中的实际物理目录,而Symfony_shared是指向我的Windows机器上Dropbox文件夹的软链接.我必须重复; 我之前从未遇到任何与此方法相关的性能问题.

相同的文件系统

现在 - 当我在浏览器中访问http://devmachine.local/Symfony/web/app_dev.php并进入探查器时,我看到这些数字:

Total time           83 ms
Initialization time  43 ms

非常好的数字.整个响应在不到100毫秒内就绪了.

关联

但是当我访问http://devmachine.local/Symfony_shared/app_dev.php时,我在分析器中看到了非常不同的数字:

Total time           6833 ms
Initialization time  4249 ms

谁能解释这些数字?什么是"初始化时间",为什么需要4秒以上?请记住,这只是Symfony演示欢迎页面.我实际测试项目中的登录页面的初始化时间为19秒,总时间为22秒.

我应该提一下,我也在php app/console两个目录中都进行了快速测试.在Symfony文件夹中,此命令立即返回使用情况,而在Symfony_shared中,它在响应之前花了几秒钟.

我对Symfony文件夹所做的唯一更改是删除了将流量限制为127.0.0.1的app_dev.php部分.


我在Debian 6.0.7(squeeze)上使用Apache 2.4.4和PHP 5.4.14.

以下是Symfony_shared欢迎页面分析器的屏幕截图:

Symfony_shared欢迎页面分析器的屏幕截图

Rya*_*yan 7

检查PHP配置是否存在open_basedir阻止stat缓存工作的限制.Symfony会进行很多fstat()调用,如果没有缓存,Symfony会非常慢.你的符号链接也可能阻止stat缓存工作.如果您对应用程序进行了概要分析(并包含本机PHP函数),那么这将是非常明显的,如果它fstat()导致您的问题.

在PHP Bug#49383上有一些关于它的信息.