在Windows上使用Precise64的Vagrant运行php非常缓慢。

6

我已经在我的开发机上使用vagrant设置了虚拟主机,但是当我尝试输出一个非常简单的“hello world”时,它会在处理该文件之前挂起大约10秒钟。HTML文件呈现非常快。我应该从哪里开始排除故障?

经过一些研究,其他人抱怨php和virtualbox/vagrant的性能缓慢。许多人声称,在主机/客户端之间使用共享文件夹是造成这种情况的原因。

  • 我曾尝试更改共享文件夹位置,使其不指向/var/www/
  • 我还尝试通过删除“config.vm.synced_folder”语句完全删除共享文件夹配置

在每种情况下,我都重新安装了盒子,但仍然出现相同的性能问题,至少在点击Web浏览器中的简单php脚本时会有10秒钟的停顿。

我尝试过的其他事情:

  • 从命令行运行相同的php脚本。这个可以正常工作。立即回应。
  • 从Web浏览器中打开一个HTML页面。我也得到了快速反应。

这使我相信问题与apache+php部分有关。

不确定还能做什么。

5个回答

7

我也遇到了这个问题。

继续跟随ivanicus的建议,这与xdebug配置有关。似乎请求在xdebug尝试连接远程调试客户端时挂起。我已经通过设置...解决了这个问题。

xdebug.remote_connect_back=0
xdebug.remote_autostart=0

我随后将xdebug.remote_host的值设置为主机的IP地址,您需要确保客户机可以在您设置的IP上连接到主机。这使我仍然可以在PhpStorm中进行调试。
看起来您目前无法在https://www.puphpet.com/的ini设置中设置xdebug.remote_connect_back选项,因此我不得不手动在php.ini中进行更改。

命令行:php --ini 显示 CLI 版本的 xdebug ini 文件位置 - Apache 版本通常不同。 - jpkrc

4

在遇到这种情况后,我只能将XDebug的使用移除来作为唯一的“解决方案”。

考虑到默认Vagrant配置源于https://puphpet.com/网站:

  • 从“manifests/default.pp”中删除xdebug行
  • 删除文件夹“modules/xdebug/”
  • vagrant destroy
  • vagrant up

备注:

  • 我想最佳解决方案是不在提到的网站上包含“xdebug”,但是我已经对我的vagrant配置进行了修改。
  • 虽然不是“理想”的解决方案,但这个方案可以解决提到的速度问题,并将此问题转变为“如何在Windows主机上启用和正确运行xdebug”。

希望这有所帮助!


我只能评论自己的答案,所以让我来吧 :) 看起来在最近的puphpet构建中这个问题已经解决了。至少我得到了一个新的构建,在我的当前项目中插入了xdebug模块和配置,现在它运行良好。此外,@mike.darke解决问题的方法比我的“解决方案”要好得多,所以如果你真的需要vagrant中的xdebug,你知道该怎么做了。 - ivanicus

1
许多人声称主机/客户机之间共享文件夹的使用是造成这个问题的原因。

在我的情况下,我发现这绝对是问题所在。

https://docs.vagrantup.com/v2/synced-folders/nfs.html

作为使用windows的用户,我也无法使用NFS选项。
为了测试这一点,我使用SFTP将我正在访问的所有SQLite文件移动到了这台机器上,性能恢复到了我预期的水平。

1
要让NFS与Windows上的同步文件夹正常工作,需要安装一个vagrant插件:vagrant plugin install vagrant-winnfsd。我成功将页面加载时间从7-10秒降至400-500毫秒。 - Emile Bergeron

0

您可以通过主机计算机分配更多资源

config.vm.provider :virtualbox do |vb|

  vb.customize ["modifyvm", :id, "--memory", "3072", "--cpus", "2"]
end

我不知道那是否有所帮助,但了解这一点很好。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接