php - Rigtigt udviklingsmiljø for Symfony2 Windows/Linux

Indlæg af Hanne Mølgaard Plasc

Problem



Først og fremmest ved jeg at titlen skal være den 400. gang det er blevet spurgt, så jeg vil gøre mit bedste for at gøre denne gang anderledes.


Fra et øjeblik (mere end 2 år ..) har vores team kæmpet meget med at etablere miljøet for udvikling. Vores sædvanlige opsætning er at bruge Fedora24-25/Php-fpm/nginx/mariadb som server. Men vi er 'forpligtede' til at bruge Windows på grund af nogle programmer, som vi skal bruge.


Det nuværende scenario


Lige nu bruger vi VirtualBox/VMWare Workstation til at virtualisere Fedora og køre vores Symfony2-applikation der. Grunden til, at jeg ikke ønsker at udvikle sig på Windows og derefter bruge applikationen i Fedora til produktion skyldes kompatibilitetsproblemer, der kommer, når du har disse 2 forskellige OS.


En af udviklerne (mig) deler øjeblikket via SMB mappen med alle applikationerne til et monteret drev i Windows og bruger PHPStorm på Windows .. og fortæller Symfony2 at omdirigere cache/logs til en anden mappe, så PhpStorm ikke behøver at indeks, at for mig hidtil har det arbejdet bedst så langt ..


Problemet


Problemet kommer, når vi skal gøre udviklingen. Lige nu arbejder vi fra Fedora med PhpStorm, og det betyder, at vi koder lige fra vores VirtualBox. Så på dette tidspunkt til udviklingsformål er Windows (aka vært) temmelig meget ubrugelig ... da vi har både IDE og server kører på VM ..


Når det er sagt, er det ret indlysende, at problemet kommer med ydeevne, vi har ret anstændige opsætninger (HP Folio 9470m i7 16GB med SSD) .. men du kan stadig mærke overhead og langsommelighed ved at gøre udviklingen på en VM. .. unødvendigt at sige det faktum at at gå mellem Windows og Linux skal du skifte disse vinduer og det er smertefuldt.


Problem nr. 2: Vi har en 3 monitorer setup, og betydningen af ​​denne præcisering vil komme i næste afsnit.


Hvad jeg har forsøgt



  1. Har applikationsfilerne på Windows og monteres via CIFS/SMB/NFS på Fedora.



Med denne tilgang er de bedste resultater, jeg har ved at bruge NFS. Normalt på en frisk installation af Symfony2 2.8 får du en svartid på omkring 50 ms på profiler med php-opcache installeret. Men ved at bruge CIFS eller SMB, der stiger drastisk til omkring 500 ms. med NFS har jeg været i stand til at komme omkring 60 ms .. MEN der er en fangst .. på Windows 10 pro er der ingen måde at bruge NFS indfødt på. Vi skulle opgradere til Enterprise som ved øjeblik er ikke en mulighed.


Også for at kunne bruge denne fremgangsmåde har jeg været nødt til at omdirigere cachen/loggen/mappen til symfony til en anden mappe inde i Fedora. Ellers ville I/O dræbe den 60ms responstid ved hjælp af en monteret mappe.



  1. Docker



Med denne tilgang har jeg haft det samme problem. Dette er en meget almindelig fejl, der foregår omkring google med Symfony2 og docker-langsomhed på grund af at lydstyrken er som et delt volumen .. det samme I/O-præstationsproblem ..



  1. Brug af Linux som hovedoperativsystem og virtualisering af Windows



Jeg troede, at dette skulle være den rigtige aftale ... men det viser sig, at jeg har oplevet flere problemer. Jeg har brugt linux i lang tid, så jeg ved, hvordan man bevæger sig rundt .. med Linux havde jeg problemer som:


en. Jeg bruger 2 hovedtelefoner ... en til en softphone og en (ørepropper) til at lytte til musik. Jeg kunne ikke få Fedora til altid at bruge en enhed til softphone og en til andre applikationer ... hver gang jeg genstarter det gik tilbage .. (ikke vigtigt, kan leve uden dette)


b. Problem nr. 2 angivet ovenfor, forsøgte jeg: Fedora, Linux Mint og Ubuntu, og i hver distro fik jeg en CRTC-fejl, da jeg forsøgte at installere mine 3 skærme ..


c. Nej HeidiSQL support (skam, men jeg kan også leve uden dette også)


så vidt som NGINX/PHP/Symfony2 fungerede alt korrekt



  1. Har alle filerne i Linux og monterer et drev på Windows



Samme præstationsproblemer, men denne gang med PhpStorm .. på grund af at filerne er over netværket bla bla bla ...


Spørgsmål


Dybest set er mit konkrete spørgsmål, hvordan går alle med at få et glat udviklingsmiljø FRA Windows ved hjælp af LINUX som en server og Symfony2/PHP som sprog/rammer?


Jeg er ret sikker på, at jeg ikke er alene i denne situation, og jo mere jeg undersøger, desto mere er spørgsmålet ..


Undskyld for det lange spørgsmål!

Bedste reference


Ok så det er hvad jeg kom med ...



  • Jeg deler applikationsmappen i Linux via CIFS og monterer den som et drev på Windows ved hjælp af en Netværksadapter til Host, så jeg behøver ikke bekymre mig om at ændre forbindelser.

  • Jeg deaktiverede den grafiske grænseflade for at gemme ressourcer

  • Jeg bruger VBoxVMService (http://vboxvmservice.sourceforge.net/) for automatisk at starte VM'en som en tjeneste, så jeg behøver ikke at åbne VirtualBox

  • Brug af Putty som min terminal

  • på Symfony overstyrer jeg getCacheDir () og getLogDir () på AppKernel og smider dem ud i en anden mappe, som ikke er i den delte mappe.



Jeg har brugt en hel dag på 4 applikationer (der er 4 PhpStorm-tilfælde åbnet), og det har fungeret fint. Den eneste gang det er langsomt er, når du først tilføjer det projekt, som IDE skal indeksere alt. [1]


Jeg vil forlade dette her, hvis det hjælper andre, eller nogen andre har yderligere kommentarer.

Andre referencer 1


Jeg har virkelig det samme problem som dig ... Jeg skal bruge et Windows-system til mit hovedarbejde, men vil udvikle mine PHP-baserede projekter på samme konfiguration som målet - fordi jeg tidligere oplevede en masse forskellige opførsel betweet PHP/Win & PHP/Linux.


Tidligere har jeg med succes brugt VBox med at montere min arbejdsmappe via SMB eller VBOXSF. Men så kom de første Symfony-projekter med deres tusindvis af filer og mapper, og denne opsætning blev næsten ubrugelig. I øjeblikket migrerede jeg denne dev-VM til Hyper-V, men det understøtter kun montering over netværk.
Måske er VMware hurtigere !? Men der er fangsten: Jeg kan ikke bruge vmware, fordi jeg vil bruge docker til Windows .... og de udelukker hinanden.


Trist at sige, at dette også eliminerer nem Vagrant dev-opsætninger.


Docker til Windows (Hyper-V) og Docker Machine (VBox) er ikke bedre :-( Det er ekstremt trist, fordi jeg virkelig kan lide nemt gentagelige opsætninger og bruge Docker også på nogle (små) prod-systemer.


Så så jeg WSL Linux-delsystemet kaldet 'bash for windows' og dugt ... der skal være løsningen .... men nej. Det er endnu værre i IO end at montere en CIFS-mappe over netværk - se
https://www.phoronix.com/scan.php?page=articleu0026amp;item=intel-7900x-wslu0026amp;num=2
Selv ved bare at installere maskinen oplevede jeg, hvor langsomt IO er, og endte ikke med installationen. [2]


I øjeblikket sidder jeg fast med en dual boot-opsætning, som virkelig pixxes mig. Jeg spilder min tid omstart. Jeg skal bruge en notesbog og flere drivere fungerer ikke korrekt, eksterne skærme ... USB-porte osv. Hvilket er hovedårsagen til, at jeg IKKE skifter helt til Linux og bruger Win as VM.
Jeg tror, ​​jeg vil give WAMP et andet forsøg ... eller jeg skal bruge en anden udvikler maskine.