【发布时间】:2015-04-02 11:16:10
【问题描述】:
我有一个运行 Apache 和 PHP 的 Vagrant VM。所有请求最初都由 mod_rewrite 路由。
当请求包含 .php 以外的任何内容时,Apache 只会直接提供该文件。这几乎可以在 vagrant VM 内部和外部立即生效。
当请求以 .php 进入时,会检查几个重写条件,最终 Apache 将请求发送到 PHP,PHP 会加载我们的 Symfony 内核环境等。我已经尝试将exit('test'); 添加到该内核引导文件的第一行,因此响应应该尽可能快。从字面上看,发生的所有事情都是 Apache 正在向 PHP 发送请求,而 PHP 将立即退出。从 VM 内部,这几乎是即时执行的。在主机上,这会导致 10 分钟以上的加载时间。
此外,一切都可以在 OS X 上完美运行,并且完全相同的设置在不同的 Windows 机器上也可以正常运行。我已经尝试重新安装/重建几乎所有导致此问题无济于事的技术部分。
那么到底是什么?从 VM 请求 PHP 内容与非 PHP 内容之间存在一些差异,但这种差异仅在请求来自 VM 外部时才存在......并且仅在特定的 Windows 机器上存在。
我完全被难住了。有什么想法吗?
【问题讨论】:
-
什么版本的 Windows 给您带来了问题?您可以在尝试此操作时退出任何可能占用资源的应用程序吗,例如Skype、Win 防火墙、Win 杀毒软件(尽可能多)?尝试创建一个新的 Windows 用户,退出当前用户,以新用户身份登录,然后再试一次 - 这将清除启动过程中的任何可疑内容。最后,您的 Vagrant/VM 日志中有什么内容吗?
-
(另外,有一点你可以花很多时间在这上面,而且重建 Win 机器会更容易——知道什么时候放弃!)
-
见Symfony2 and Twig performance in a vagrant box,可能和这个性能问题有关。
-
@halfer 我已经尝试创建一个新的用户帐户,看看是否会改变任何事情。同样的问题。在我看来,页面加载的事实意味着这不可能是网络/防火墙问题。当不涉及 PHP 时,它们会立即从主机加载,因此这可能是 apache/php 问题,但在所有情况下它们都会立即从 VM 加载,因此这不可能是 apache/php 问题。跨度>
标签: php apache symfony mod-rewrite vagrant