gpt4 book ai didi

php - Symfony2 和 Twig 在 vagrant box 中的表现

转载 作者:可可西里 更新时间:2023-10-31 22:54:19 26 4
gpt4 key购买 nike

先决条件:

  1. http://box.scotch.io/ Vagrant 盒

  2. 2.
# -*- mode: ruby -*-
# vi: set ft=ruby :


Vagrant.configure("2") do |config|

config.vm.box = "scotch/box"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.network "forwarded_port", guest: 80, host: 80
config.vm.network "forwarded_port", guest: 3306, host: 3306
config.vm.network "forwarded_port", guest: 443, host: 443
config.vm.network "forwarded_port", guest: 1081, host: 1081
config.vm.hostname = "scotchbox"
config.vm.synced_folder "../../../project", "/var/www", :mount_options => ["dmode=777", "fmode=666", "uid=1000", "gid=1000"], type: "nfs"
#config.vm.synced_folder "./mysql", "/var/lib/mysql", :mount_options => ["dmode=700", "fmode=600", "uid=106", "gid=112"], type: "nfs"
config.vm.synced_folder "../../../project/_conf", "/etc/apache2/sites-enabled", :mount_options => ["dmode=755", "fmode=644", "uid=0", "gid=0"], type: "nfs"

#############################


$script = <<SCRIPT
sudo service apache2 restart && sudo service mysql start
SCRIPT

config.vm.provision "shell", inline: $script, privileged: false, run: "always"
end
  1. 一个 symfony2 项目在盒子里运行。这是 composer.json 的 require 部分
    "require": {
"php": ">=5.3.3",
"symfony/symfony": "2.2.*",
"doctrine/orm": "~2.2,>=2.2.3",
"doctrine/doctrine-bundle": "1.2.*",
"twig/extensions": "1.0.*",
"symfony/assetic-bundle": "2.1.*",
"symfony/swiftmailer-bundle": "2.2.*",
"symfony/monolog-bundle": "2.2.*",
"sensio/distribution-bundle": "2.2.*",
"sensio/framework-extra-bundle": "2.2.*",
"sensio/generator-bundle": "2.3.*",
"jms/security-extra-bundle": "1.4.*",
"jms/di-extra-bundle": "1.3.*",
"kriswallsmith/assetic": "v1.1.0-alpha4",
"gedmo/doctrine-extensions": "dev-master",
"stof/doctrine-extensions-bundle": "dev-master",
"doctrine/doctrine-fixtures-bundle": "dev-master",
"mopa/bootstrap-bundle": "2.2.x-dev",
"twbs/bootstrap": "2.3.1",
"jlong/sass-twitter-bootstrap": "2.3.1",
"liip/theme-bundle": "dev-master",
"fkr/cssurlrewrite-bundle": "*",
"knplabs/knp-paginator-bundle": "dev-master",
"knplabs/knp-components": "dev-master#f096dd02136957ce1fba5819261a45b3ee9ed4a7",
"craue/formflow-bundle": "dev-master",
"sonata-project/admin-bundle": "dev-master",
"sonata-project/cache-bundle": "dev-master",
"sonata-project/doctrine-orm-admin-bundle": "dev-master",
"avalanche123/imagine-bundle": "v2.1",
"r1pp3rj4ck/TwigstringBundle": "dev-master",
"raulfraile/ladybug-bundle": "1.0.1"
},

问题:

即使打开登录表单等空白页面,也需要很长时间。正如在探查器中看到的,大部分时间都花在了 Twig 渲染上:

Twig taking 3.5 seconds to render

我尝试过的:

  1. 如您在 Vagrantfile 中所见,NFS 已启用。不确定如何测试它
  2. 阅读thisthis .您在上面的屏幕截图中看到的测试是在完成这些更改后运行的

最佳答案

如果您的主机操作系统是 Win(在我的例子中是 Windows 7 x64),为了让它在 vagrant 中更快地工作,您需要:

  1. 添加this使固定。我还在列表中添加了“prod”环境:
public function getCacheDir()
{
if (in_array($this->environment, array('dev', 'test', 'prod'))) {
return '/dev/shm/project/cache/' . $this->environment;
}

return parent::getCacheDir();
}

public function getLogDir()
{
if (in_array($this->environment, array('dev', 'test', 'prod'))) {
return '/dev/shm/project/logs';
}

return parent::getLogDir();
}
  1. 利用 NFS 修复 I/O 性能。问题是我很困惑:在 synced_folders 中设置 nfs=true 选项并不意味着您正在通过 NFS 进行连接。我的主机操作系统是 Win7,我必须安装 NFS server为了让它发挥作用。请注意,它不是免费的。这是我必须共享的两个文件夹:

enter image description here

此外,使用 synced_folder 挂载对我来说不起作用,因为 NFS 服务器只监听特定的 IP 地址,所以我不得不注释掉这一点:

config.vm.synced_folder "../../../project", "/var/www", type: "nfs",:nfs => true

然后改成这样:

$script = <<SCRIPT
sudo mount 192.168.178.40:/d/project /var/www/ && sudo mount 192.168.178.40:/d/project/_conf /etc/apache2/sites-enabled && sudo service apache2 restart
SCRIPT

config.vm.provision "shell", inline: $script, privileged: false, run: "always"

,其中192.168.178.40是开放NFS端口的IP。你可以从你的 gurest OS 扫描它,例如nmap.

  1. 您还需要安装名为 vagrant-winnfsd 的 vagrant 插件。可以通过以下方式完成:

vagrant plugin install vagrant-winnfsd

关于php - Symfony2 和 Twig 在 vagrant box 中的表现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27100713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com