小编Ben*_*son的帖子

适用于Symfony2 Windows / Linux的正确开发环境

首先,我知道按标题显示的时间必须是被问到的第400次,因此,我将尽最大努力使这段时间与众不同。

从现在开始(超过2年..),我们的团队为建立发展环境付出了很多努力。我们通常的设置是使用Fedora24-25 / Php-fpm / nginx / mariadb作为服务器。但是,由于必须使用某些程序,因此“必须”使用Windows。

当前场景

现在,我们正在使用VirtualBox / VMWare工作站来虚拟化Fedora并在其中运行我们的Symfony2应用程序。我不想在Windows上开发然后在Fedora中使用该应用程序进行生产的原因是由于拥有这两种不同的OS时出现的兼容性问题。

目前,一位开发人员(我)正在通过SMB将所有应用程序的文件夹共享到Windows中已安装的驱动器上,并在Windows上使用PHPStorm ..还告诉Symfony2将缓存/日志重定向到另一个文件夹,以便PhpStorm不必索引,到目前为止,对我来说,效果最好。

问题

问题出在我们需要进行开发时。.现在,我们正在使用PhpStorm处理Fedora,这意味着我们正在从VirtualBox中进行编码..因此,出于开发目的,Windows(又名主机)已经相当没用...因为我们在虚拟机上都运行了IDE和服务器。

话虽如此,但问题显然出在性能上,我们拥有相当不错的设置(带有SSD的HP Folio 9470m i7 16GB)..但是您仍然可以感觉到在VM上进行开发的开销和缓慢。 ..不用说,要在Windows和Linux之间切换就必须切换这些窗口,这一点很痛苦。

问题2:我们有3个显示器设置,这一点的重要性将在下一部分中介绍。

我尝试过的

  1. 在Windows上拥有应用程序文件,并在Fedora上通过CIFS / SMB / NFS挂载它们。

通过这种方法,我获得的最佳结果是使用NFS。通常,在全新安装的Symfony2 2.8上,在安装了php-opcache的探查器上,您会获得大约50ms的响应时间。但是,使用CIFS或SMB急剧增加到大约500ms,使用NFS,我已经可以达到60ms左右。但是,有一个陷阱。.在Windows 10专业版上,无法自然使用NFS。必须升级到Enterprise,目前还不可行。

同样,为了能够使用这种方法,我不得不将symfony的cache /和logs /文件夹重定向到Fedora中的另一个文件夹。否则,使用已安装的文件夹,I / O会浪费60ms的响应时间。

  1. 码头工人

使用这种方法,我遇到了完全相同的问题..这是一个非常常见的错误,由于卷就像共享卷,这在Google上出现了Symfony2和Docker缓慢的问题。.相同的I / O性能问题。

  1. 使用Linux作为主要操作系统并虚拟化Windows

我以为这将是真正的交易...但是事实证明,我遇到了几个问题。.我已经使用Linux很长时间了,所以我知道如何使用Linux。

一种。我使用2副耳机...一个用于软电话,一个(耳塞)听音乐。.我无法让Fedora始终将一台设备用于软电话,将另一台设备用于其他应用程序...每次重新启动它时回去了..(不重要,没有这个可以活下去)

b。我在上面指定的问题#2中尝试了:Fedora,Linux Mint和Ubuntu,在尝试发行3个显示器时,在每个发行版中我都遇到了CRTC错误。

C。不提供HeidiSQL支持(可惜,但是我也可以不用它)

就NGINX / PHP / Symfony2而言,一切正常

  1. 在Linux中拥有所有文件,并在Windows上安装驱动器

同样的性能问题,但是这次是PhpStorm ..,因为文件是通过网络的事实bla bla bla bla ...

问题

基本上,我的明确问题是,每个人都将如何使用LINUX作为服务器并以Symfony2 / PHP作为语言/框架从Windows获得平稳的开发环境?

我很确定自己在这种情况下并不孤单,而且我研究的越多,问题就越多。

对不起,很长的问题!

php linux windows nginx symfony

5
推荐指数
1
解决办法
512
查看次数

Symfony2 子表单事件传播

我有两个实体。实体 A 是实体 B 的父级。我正在为实体 A 创建一个 REST,其中包含实体 B 作为子项。

class EntityA {
   private $name;
   private $type;

   private $bs;
}

class EntityB {
   private $entityA;
   private $color;
}
Run Code Online (Sandbox Code Playgroud)

我基本上做了一个post/put类似的东西:

{ "name": "anamehere", "type": "atypehere", "bs": [{"color": "blue"}] }
Run Code Online (Sandbox Code Playgroud)

对于重要的部分,实体 A 的形式如下所示:

/**
 * @param FormBuilderInterface $builder
 * @param array $options
 */
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('name', TextType::class)
        ->add('type', TextType::class)
        ->add('bs', CollectionType::class, array(
            'entry_type' => EntityB::class,
            'allow_add' => true,
            'allow_delete' => true,
            'by_reference' => false,
        ));

    $builder->addEventListener(FormEvents::SUBMIT, …
Run Code Online (Sandbox Code Playgroud)

php forms entity event-listener symfony

3
推荐指数
1
解决办法
784
查看次数

标签 统计

php ×2

symfony ×2

entity ×1

event-listener ×1

forms ×1

linux ×1

nginx ×1

windows ×1