7

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

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

htdocs
|`- Symfony
 `- Symfony_shared -> /mnt/hgfs/Dropbox/Symfony

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

相同的文件系统

现在 - 当我在浏览器中访问http://devmachine.local/Symfony/web/app_dev.php并继续分析器时,我看到了这些数字:

总时间 83 毫秒
初始化时间 43 ms

非常漂亮的数字。整个响应在不到 100 毫秒内准备就绪。

链接

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

总时间 6833 毫秒
初始化时间 4249 ms

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

我应该提一下,我还在php app/console两个目录中进行了快速测试。在 Symfony 文件夹中,此命令立即返回使用情况,而在 Symfony_shared 中,它需要几秒钟才能响应。

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


我在 Debian 6.0.7(挤压)上使用 Apache 2.4.4 和 PHP 5.4.14。

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

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

4

2 回答 2

7

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

PHP Bug #49383有一些关于它的信息。

于 2013-04-19T01:09:11.917 回答
3

尝试将 PHP.ini 的 realpath_cache_size 设置为 > 1000 最近添加了一个 symfony 要求来解决此问题:https ://github.com/sensiolabs/SensioDistributionBundle/commit/cf0179711b24d84d4a29d71a4010540f4c990bd8

于 2013-12-18T12:59:59.610 回答