SymLinksIfOwnerMatch performance

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Ervaren PHP Developer

Functie omschrijving Jelling IT zoekt ervaren PHP developer! Voor een organisatie in de regio Rhenen zijn wij op zoek naar een ervaren PHP developer die gaat functioneren als een verlengstuk van de klant. Jij bent iemand die technisch complexe zaken met enthousiasme aanvliegt. Je bent in staat om aan meerdere projecten te werken en werkt graag met de nieuwste technieken. In deze functie werk je veel samen met front-end developers en stel je alles in het werk om grote verschillen voor de klanten teweeg te brengen. Verder ben jij iemand die graag zichzelf uitdaagt en die altijd de beste wilt

Bekijk vacature »

Senior Front end developer Automotive Angular

Functie Als Senior Front end developer kom je te werken in een team van 11 developers. 9 van de 11 focussen zich op back end, welke is geschreven in Java, en 2 op de front end waarbij er gebruik wordt gemaakt van Typescript en Angular. De focus in deze rol ligt op 2 aspecten; doorontwikkeling van de eigen tooling en gebruik van de tooling t.b.v. klantprojecten. Momenteel zijn ze in de afrondende fase van een project waarbij ze het gehele verkoopproces van nieuwe auto’s anders ingeregeld hebben voor een grote dealer in Nederland. Waarbij Auto’s normaliter pas verkocht werden in

Bekijk vacature »

C#.NET ontwikkelaar

Functie omschrijving Voor een softwarebedrijf in de omgeving van Veghel zijn we op zoek naar een C# developer. Word jij blij van ontwikkelen in C# en .NET? Lees dan snel verder! Jouw werkzaamheden zullen er als volgt uit gaan zien: Op basis van de wensen van de klant ga je samen met je collega's ga je op zoek naar de juiste oplossingen en je gaat dit uitwerken tot een mooi eindproduct. Je bouwt webshops, webapplicaties en websites, dit doe je door middel van ASP.NET, MVC Framework en C#. Je zorgt voor de optimalisering van bestaande software en de automatisering van

Bekijk vacature »

Software Programmeur

Functie omschrijving Voor onze opdrachtgever in omgeving Rotterdam zijn wij opzoek naar een software programmeur die goed kan schrijven in de talen C of C++ en die het leuk vind om te werken met Linux! Werkzaamheden Programmeur Je bent bezig met het ontwikkelen van software en webapplicaties. Je kunt technische klussen uitvoeren op locatie. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een project goed verloopt. Je zult klanten ondersteunen. Verder zul je technische ontwerpen en gebruikersdocumentaties schrijven en deze onderhouden. Bedrijfsprofiel Dit bedrijf wil de klanten een volledige oplossing kunnen bieden, waarbij ze een

Bekijk vacature »

Junior Software Developer

Functie omschrijving Wij zijn op zoek naar een Junior Software Developer!? Sta jij aan het begin van jouw loopbaan of heb jij misschien al enige ervaring? Vind jij het daarnaast belangrijk om jezelf constant te kunnen ontwikkelen en uitdagen? Lees dan snel verder! Voor een vooraanstaand softwarehuis in Nieuwegein ben ik op zoek naar een Junior Software Developer. De eigenaar van het bedrijf is ervan bewust dat je als junior nog een hoop kan leren, waardoor je de eerste maanden veel begeleiding en diverse trainingen krijgt. Daarna ga je samen met je collega's aan zowel kleine als grote projecten werken.

Bekijk vacature »

In-house .NET software developer

Functie omschrijving Ben jij op zoek naar een uitdagende in-house development functie? Maak jij graag hét verschil m.b.t. interne automatisering? Haal jij energie uit het automatiseren van processen voor je eigen collega's? Dan hebben wij de perfecte vacature voor je! Voor een gezellig Brabants familiebedrijf, zijn wij op zoek naar een .NET software developer. Je gaat in deze zelfstandige functie werken aan de ontwikkeling van eigen applicaties & en het koppelen van deze applicaties aan de ingekocht software. Jouw werkzaamheden zien er als volgt uit: Het management team signaleert behoeftes vanuit de business. Vervolgens worden deze behoeftes uitgewerkt en geprioriteerd.

Bekijk vacature »

PHP Developer (junior functie)

Functie omschrijving Wij zijn op zoek naar een PHP Developer! Ben jij een starter en wil je werken bij een jong en leuk bedrijf? Lees dan verder! Wij zijn op zoek naar een PHP Developer binnen een junior functie. Binnen dit bedrijf gaat het om persoonlijke aandacht en ontwikkeling! Je komt te werken voor een leuk communicatiebureau die alles op het gebied van online en offline communicatie doet. Dit doen zij voor verschillende branches, waardoor je aan diverse soorten projecten mag werken, dit maakt deze baan erg leuk! Daarbij werk je aan een door hun zelf ontwikkeld framework welke goed

Bekijk vacature »

Senior developer (PHP en VB.NET)

Functie De development afdeling bestaat uit 2 teams. Het productteam (10 developers) is verantwoordelijk voor verschillende applicaties met als doel om zoveel mogelijk te automatiseren en uit te werken tot standaard software. Met diverse Solutions Architecten en ervaren developers denken ze voortdurend mee met hun klanten en bouwen ze de basis van het uiteindelijke maatwerk dat wordt geleverd. Hiernaast hebben ze een maatwerk/projectteam. Dit team bestaat momenteel uit 8 developers (junior tot senior) en is verantwoordelijk voor het maatwerk in hun klantprojecten. Momenteel zijn ze op zoek naar een senior developer die aan de slag gaat in het productteam. Hierin

Bekijk vacature »

Magento2 Developer

Functie Ben jij een ontwikkelaar en wil jij een volgende stap zetten en als teamlead aan de slag? Lees dan snel verder! Voor een gewilde opdrachtgever in omgeving Delft zijn wij op zoek naar een programmeur die als meewerkend voorman aan de slag wilt gaan. Een developer die een team van twee man aan zal sturen. Jouw werkzaamheden zullen er als volgt uitzien; Ontwikkelen en ontwerpen van API's; Maatwerkoplossingen; Databeveiliging; Optimalisatie webshops; Ontwikkelen technische implementaties voor verbetering database; Aanspreekpunt voor de organisatie en verantwoordelijk voor de aansturing van externe developers. Zoek je veel uitdaging en veelzijdigheid in je werk dan

Bekijk vacature »

SAP HANA Cloud Application Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 12662 Introductie HANA Cloud Application Developer at a High Tech company. The company is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. This role is situated in the Big Data Analytics (BDA) Domain. The teams have mixture of young talent and senior specialists and have a

Bekijk vacature »

Software Developer (Junior functie)

Functieomschrijving Wij zijn op zoek naar een Software Developer! Sta jij in de startblokken om je carrière te beginnen en kan je niet wachten om toffe software te gaan ontwikkelen? Kortom, ben je onlangs afgestudeerd of sta je op het punt om je papiertje te behalen? Voor een IT dienstverlener dat gespecialiseerd is in Microsoft technologie zijn wij op zoek naar C#.NET Developers. Het bedrijf heeft meerdere klanten in regio Utrecht waar je permanent kan komen te werken. Kom je liever te werken bij een klein softwarebedrijf of bij een groot consultancy bureau? Dat is helemaal aan jou de keuze!

Bekijk vacature »

Front-end developer - working on software for arou

Functie They have recently started looking for an experienced Front-end (mobile/app) developer. Because of the short lines within the team, they are also looking for someone who can communicate with the service desk, sales and support for technical questions. You will join their IT team consisting of about 10 colleagues divided over two teams in rooms opposite each other. Half of these are involved in their front-end. You will work together with, among others, the Architect, 1 senior, 1 junior and there is a Team Leader. In terms of technology, they work with a unique tech-stack, particularly because of the

Bekijk vacature »

PHP/Symfony developer

Functieomschrijving Vanuit het hoofdkantoor in omgeving Bergen op Zoom ben je als PHP/Symfony Developer niet alleen bezig met software ontwikkeling. Je bent buiten ontwikkeling ook continu bezig met het zoeken naar nieuwe trends en ontwikkelingen die van waarde kunnen zijn voor de efficiëntie van software ontwikkeling. Techstack: PHP, Symfony & mySQL. Jouw takenpakket ziet er als volgt uit: Het ontwerpen en implementeren van webapplicaties met het Symfony-framework; Het testen van ontwikkelde applicaties om te zorgen dat ze goed functioneren en voldoen aan de eisen van de klanten; Het schrijven van een schone en efficiënte code volgens het Symfony framework; Onderhouden

Bekijk vacature »

Pagina: 1 2 3 volgende »

Ozzie PHP

Ozzie PHP

30/05/2016 02:26:42
Quote Anchor link
Ola,

Ik kwam toevallig het onderstaande tegen.

http://httpd.apache.org/docs/2.4/misc/perf-tuning.html#symlinks

Ondanks dat ik FollowSymLinks (via Plesk) heb uitgeschakeld, werkt rewriting nog steeds. Ik ga er dus vanuit dat SymLinksIfOwnerMatch op een hoger niveau wél is ingeschakeld. Als ik nu de bovenstaande link lees, dan staat daar dat er telkens wordt gecontroleerd op eigenaar.

Wat ik nu niet begrijp uit de documentatie ... stel, ik zet in mijn index.php het volgende:

require '/var/www/framework/index.php';

Gaat ie dan voor iedere map de eigenaar checken, ook als het géén symlink betreft? Of gebeurt dit alleen als het wél een symlink betreft? Bijv. als ik dit zou doen:

require '/framework/index.php';

... waarbij /framework dan een symbolische link is naar /var/www/framework/ ?
Gewijzigd op 30/05/2016 02:27:51 door Ozzie PHP
 
PHP hulp

PHP hulp

19/05/2024 09:28:25
 
Bart V B

Bart V B

30/05/2016 07:33:12
Quote Anchor link
Volgens mij gaat hij dan iedere map na of hij de juiste rechten heeft.
En dat is dan maar goed ook, want je wil niet hebben dat men "zomaar" van alles kunnen schrijven op je server. Stel je voor dat men kan schrijven in /etc/passwd . hmmm... Dan zou ik toch de rillingen krijgen.

Als je issue zou zijn performance, dan denk ik dat die maar 1000-ste milliseconden wel mee zal vallen ;)

Trouwens, het staat daar ook heel goed beschreven:
Quote:
and a request is made for the URI /index.html, then Apache will perform lstat(2) on /www, /www/htdocs, and /www/htdocs/index.html. The results of these lstats are never cached, so they will occur on every single request.

De vraag is alleen hoe heb jij je configuratie?
Gewijzigd op 30/05/2016 07:58:53 door Bart V B
 
Ben van Velzen

Ben van Velzen

30/05/2016 10:58:51
Quote Anchor link
Bart heeft gelijk, echter is de inhoud van je scripts niet onderhevig aan deze controles, dit geldt alleen voor binnenkomende requests en eventuele rewrites die hieruit volgen. PHP, Perl, Python, pick your poison staan hier los van en doen hun eigen controles.
 
Ozzie PHP

Ozzie PHP

30/05/2016 15:19:49
Quote Anchor link
>> Volgens mij gaat hij dan iedere map na of hij de juiste rechten heeft.

Volgens mij gaat het niet zozeer om de rechten, maar om de juiste eigenaar (maar wellicht bedoel je dat ook).

Maar doet ie dat dan alleen bij een symbolische link ... of ook bij een 'normale' link? Dus stel, ieder request komt binnen op (een centraal) index.php en vanuit daar wil ik het framework aanroepen.

Nu kan ik dat doen via de 'echte' link:

require '/var/www/framework/index.php';

... of ik kan een symoblische link aanmaken naar de 'framework' map. In index.php krijg je dan:

require '/framework/index.php'; // de map framework is hier dus een symbolische link

In het eerste geval is er geen sprake van een symbolische link. Gaat ie dan toch dan van iedere map ('var' 'www' en 'framework' ) controleren of die dezelfde eigenaar heeft als het centrale index.php bestand? Of doet ie dat alleen in het tweede geval waar ook daadwerkelijk sprake is van een symbolische link?

Anders gezegd: komt SymLinksIfOwnerMatch altijd in actie, of alleen als het ook echt een symbolische link betreft?

>> Bart heeft gelijk, echter is de inhoud van je scripts niet onderhevig aan deze controles ...

Bedoel je daarmee dat als ik vanuit de centrale index.php het framework aanroep de controles plaatsvinden tot aan het index.php bestand in het framework, maar daarna niet meer?

>> Als je issue zou zijn performance, dan denk ik dat die maar 1000-ste milliseconden wel mee zal vallen ;)

Dat zou inderdaad kunnen wat je zegt ... maar omdat het specifiek wordt vermeld als performance issue op de website van Apache ben ik toch wel benieuwd. Stel dat ik in mijn centrale index.php het framework aanroep via een symbolische link (minder typwerk) maar het gevolg is dat vervolgens alle aanroepen worden gecheckt op eigenaar ... dan kan (wellicht) de performance daar ineens wel merkbaar onder gaan lijden. Maar dat hangt dus af van hoe SymLinksIfOwnerMatch nu eigenlijk precies werkt. Vandaar ook mijn vraag.
Gewijzigd op 30/05/2016 15:25:25 door Ozzie PHP
 
Ben van Velzen

Ben van Velzen

30/05/2016 15:30:08
Quote Anchor link
>>Bedoel je daarmee dat als ik vanuit de centrale index.php het framework aanroep de controles plaatsvinden tot aan het index.php bestand in het framework, maar daarna niet meer?

Ik bedoel hiermee dat de controles plaatsvinden tot het moment dat een request slaagt, ofwel de uitvoer van het script begint. Wat er in je script gebeurt staat niet onder controle van de webserver, en als zodanig worden beveiligingen vanuit Apache niet afgedwongen. Het zijn twee verschillende lagen. Ongeacht het FollowSymlinks gedrag binnen Apache zal PHP symlinks gewoon volgen.

De werking van SymlinkIfOwnerMatch is heel eenvoudig: wanneer je een request doet wordt gecontroleerd of het pad symlinks bevat. Dit gebeurt zoals eerder gezegd via lstat() op de verschillende elementen van het pad. Wanneer een symlink "gezien" wordt, wordt de eigenaar van de link vergeleken met de eigenaar van het pad waar deze link naar wijst. Wanneer deze ongelijk zijn wordt het request geweigerd. FollowSymlinks bevat dezelfde controle, minus de gebruikerscontrole: wanneer een symlink wordt aangetroffen wordt deze niet gevolgd en er volgt direct een Forbidden melding.
Gewijzigd op 30/05/2016 15:36:08 door Ben van Velzen
 
Ozzie PHP

Ozzie PHP

30/05/2016 15:45:25
Quote Anchor link
Thanks Ben. Ik ben nog niet zo vergevorderd in deze materie als jij ... dus vergeef me mijn vragen ;-)

>> Ik bedoel hiermee dat de controles plaatsvinden tot het moment dat een request slaagt ...

Wat bedoel je met "dat een request slaagt"? Als ik require '/framework/index.php'; doe, is het request dan geslaagd als index.php wordt geladen? En wat zou er gebeuren als ik vanuit die index.php weer een nieuwe symlink zou aanroepen?

>> De werking van SymlinkIfOwnerMatch is heel eenvoudig: wanneer je een request doet wordt gecontroleerd of het pad symlinks bevat.

Ah oké .. ik denk dat ik het nu begrijp. Dus zelfs als het geen symlink is, dan worden toch de controles uitgevoerd óf het een symlink is. Correct? En zo ja, dan volgt de controle van de eigenaar.

En bij FollowSymlinks wordt niet gecontroleerd of het een symlink is, maar wordt de link gewoon altijd gevolgd. Op die manier?
 
Ben van Velzen

Ben van Velzen

30/05/2016 15:48:44
Quote Anchor link
>> Wat bedoel je met "dat een request slaagt"? Als ik require '/framework/index.php'; doe, is het request dan geslaagd als index.php wordt geladen? En wat zou er gebeuren als ik vanuit die index.php weer een nieuwe symlink zou aanroepen?

Een request is geslaagd zodra de controle wordt overgedragen naar PHP, of er een bestand wordt teruggegeven. Binnen PHP bestaan deze controles niet, en zal de request via een symlink altijd slagen, zolang de user waar PHP onder draait toegang heeft. Welke user dat is is afhankelijk van de configuratie van de brug tussen Apache en PHP. Dit kan via CGI, FastCGI, libphp, etc. Per geval is het verschillend wat configureerbaar is. Zo is er SuEXEC, mod_ruid en suphp om een paar te noemen.

>> Ah oké .. ik denk dat ik het nu begrijp. Dus zelfs als het geen symlink is, dan worden toch de controles uitgevoerd óf het een symlink is. Correct? En zo ja, dan volgt de controle van de eigenaar.

Correct.

>> En bij FollowSymlinks wordt niet gecontroleerd of het een symlink is, maar wordt de link gewoon altijd gevolgd. Op die manier?

Afhankelijk van de instelling wordt hij altijd gevolgd of altijd geweigerd.
Gewijzigd op 30/05/2016 15:57:44 door Ben van Velzen
 
Ozzie PHP

Ozzie PHP

30/05/2016 16:07:52
Quote Anchor link
Het begint steeds duidelijker te worden. Het laatste stuk snap ik, alleen het eerste niet ... met name dit "Een request is geslaagd zodra de controle wordt overgedragen naar PHP".

Ik heb nu PHP 7 FastCGI draaien. In de (overkoepelende) virtual host settings geef ik aan (via rewriting) dat iedere request naar index.php moet worden doorgestuurd. Een bezoeker bezoekt nu www.mijnsite.nl/blabla

Die request wordt dus doorgestuurd naar de index.php in de document root. In die index.php zet ik:

require '/framework/index.php';

De map 'framework' in de bovenstaande link is een symbolische link naar '/var/www/framework'.

Als ik jou nu goed begrijp dan wordt er (als SymlinkIfOwnerMatch is ingeschakeld) gekeken of 'framework' een symlink is. Dat is zo. Vervolgens wordt dan gekeken of de eigenaar van de map 'framework' hetzelfde is als de eigenaar van index.php in de document root. Dit is zo ... is de request nu dan geslaagd en houdt vanaf dit punt het controleren van de eigenaar op, ook al zou ik vanuit het framework weer een andere symlink aanroepen?
Gewijzigd op 30/05/2016 16:08:43 door Ozzie PHP
 
Ben van Velzen

Ben van Velzen

30/05/2016 16:15:25
Quote Anchor link
Nee, daar wordt niet naar gekeken, want dit gebeurt in je script. Apache heeft niets te maken met de inhoud van je script, alleen wat er gebeurt om in dit geval index.php voor de eerste keer op te vragen. De require heeft deze controles dus niet. Apache en PHP zijn 2 verschillende dingen, en hebben hun eigen -verschillende- controles.

Dus:
Gebruiker bezoekt www.mijnsite.nl/blabla
Apache bepaalt dat de request gaat naar index.php
Afhankelijk van je configuratie controleert Apache of er symlinks in het pad naar index.php staan en handelt overeenkomstig
Je script wordt aangeroepen (de controle wordt overgedragen aan PHP), verdere controles zullen door Apache niet gedaan worden.
Gewijzigd op 30/05/2016 16:18:31 door Ben van Velzen
 
Ozzie PHP

Ozzie PHP

30/05/2016 16:38:56
Quote Anchor link
Aha ... dus zodra index.php in de document root is aangeroepen, is daarna dit hele verhaal dus eigenlijk niet meer van toepassing. Dan vinden die controles dus niet meer plaats. Het gaat dus uitsluitend om die allereerste rewrite naar index.php in de doc root als ik je goed begrijp?

En wie is dan eigenlijk de "eigenaar" van die allereerste request? (aan de hand waarvan de controle wordt uitgevoerd)

Maar dat houdt dan dus ook in dat het qua performance eigenlijk niks uitmaakt of je followsymlinks of SymlinkIfOwnerMatch gebruikt, aangezien het enkel om het aanroepen van index.php gaat?
 
Ben van Velzen

Ben van Velzen

30/05/2016 16:48:59
Quote Anchor link
De eigenaar is de eigenaar van de virtualhost, vaak een user als www-data of nobody, maar de eigenaar bij SymlinkIfOwnerMatch heeft een andere definitie:
De eigenaar is in dit geval de eigenaar van de link (dus de user/group die aan de link gehangen zijn met chown/chgrp). De eigenaar wordt opgevraagd door Apache, en het doel van de link wordt hiermee vergeleken. Als jij als root een link /framework maakt naar /var/www/framework en die map is eigendom van de user ozzie, en je verandert de eigenaar van de link niet naar ozzie zal Apache het volgen van de link niet toestaan.
 
Ozzie PHP

Ozzie PHP

30/05/2016 17:37:51
Quote Anchor link
Oké, dus als ik je goed begrijp ... als ik /var/www/framework en de symlink beiden als root aanmaak is er niks aan de hand, maar als ik een van beiden als user ozzie aanmaak, dan werkt het niet als SymlinkIfOwnerMatch is ingeschakeld?

Maar dit speelt dus alleen bij de aanroep TOTDAT index.php in de doc root is geladen? En daarna maakt het niet meer uit? Dus als index.php is geladen en ik roep van daaruit de symlink 'framework/index.php/' aan, dan maakt het niet uit als de symlink door root is gemaakt en de map door ozzie?

Toevoeging op 30/05/2016 17:40:15:

Oh ja, als het enkel om het stukje tot aan index.php gaat dan neem ik aan dat het qua performance niet echt uitmaakt of je SymlinkIfOwnerMatch of FollowSymlinks gebruikt? Aangezien Apache op haar website voor performanceverlies waarschuwt??
 
Ben van Velzen

Ben van Velzen

30/05/2016 18:15:55
Quote Anchor link
Op beide vlakken is het antwoord: correct. lstat() is een relatief langzamen systemcall, maar omdat het resultaat uit lstat alle informatie die betrekking heeft op FollowSymlinks en SymlinksIfOwnerMatch is de performance gelijk. Alleen de uitwerking is anders. Wanneer je FollowSymlinks uit hebt staan vindt de controle plaats, wanneer deze aan staat niet. Wanneer SymlinksIfOwnerMatch aan staat vindt controle plaats, en wanneer deze uit staat wordt nog steeds gecontroleerd of je symlinks in het pad hebt staan. Voor de performance is er dus weinig tot geen verschil.

PHP heeft geen notie van de Apache configuratie, en doet als zodanig niets met symlinks. Ze worden gewoon gevolgd. Zolang de user toegang heeft tot de bestanden die je opvraagt met require, include of aanverwanten worden deze gewoon geopend.
 
Ozzie PHP

Ozzie PHP

30/05/2016 18:19:58
Quote Anchor link
Oké cool, thanks.

>> Zolang de user toegang heeft tot de bestanden die je opvraagt met require, include of aanverwanten worden deze gewoon geopend.

En dat is dan denk ik weer te regelen met open_basedir correct?
 
Ben van Velzen

Ben van Velzen

30/05/2016 18:23:27
Quote Anchor link
Ook dat, en natuurlijk met gewoon basis bestandsrechten.
 
Ozzie PHP

Ozzie PHP

30/05/2016 18:23:56
Quote Anchor link
Oké cool ... thanks voor je hulp en inzichten!!
 
Willem vp

Willem vp

31/05/2016 23:45:12
Quote Anchor link
Ozzie PHP op 30/05/2016 17:37:51:
Oh ja, als het enkel om het stukje tot aan index.php gaat dan neem ik aan dat het qua performance niet echt uitmaakt of je SymlinkIfOwnerMatch of FollowSymlinks gebruikt? Aangezien Apache op haar website voor performanceverlies waarschuwt??

Om die performance hoef je je denk ik niet zo druk te maken. De webserver op mijn werk heeft vandaag (vrij rustige dag ;-) ) een kleine 2 miljoen requests afgehandeld en praktisch elke request loopt door een of meerdere symlinks. Daar komt nog eens bij dat het een virtuele machine is die een groot deel van de requests via een reverse proxy laat afhandelen door webservers op andere virtuele machines (die ook aan elkaar hangen van symlinks). De content wordt vervolgens dynamisch gegenereerd door een script dat data uit een database ophaalt, in XML-formaat zet en door een XSLT-parser haalt die er HTML van maakt. En dat alles zonder noemenswaardige vertraging.

Ik heb geen idee vanaf welke getallen het performanceverlies merkbaar zou moeten zijn. Ik ben het in ieder geval nog niet tegengekomen. De voornaamste reden dat op piekmomenten onze performance inzakt is doordat onze gigabit-uplink het niet meer trekt.
 
Ozzie PHP

Ozzie PHP

01/06/2016 00:01:32
Quote Anchor link
Thanks voor je toelichting Willem. Fijn om te horen. Wel vreemd dan dat de website van Apachte er voor "waarschuwt". Beetje storm in een glas water dan ...
 
Willem vp

Willem vp

01/06/2016 00:11:18
Quote Anchor link
Ozzie PHP op 01/06/2016 00:01:32:
Thanks voor je toelichting Willem. Fijn om te horen. Wel vreemd dan dat de website van Apachte er voor "waarschuwt". Beetje storm in een glas water dan ...

Ik sluit niet uit dat die alinea een jaar of 20 geleden is geschreven, toen een dergelijke instelling nog wel merkbaar kon zijn voor je performance. :-)
 
Ozzie PHP

Ozzie PHP

01/06/2016 00:30:47
Quote Anchor link
Tja, het zou kunnen, maar het staat toch vermeld bij versie 2.4 ... wel slordig dan.
 
Thomas van den Heuvel

Thomas van den Heuvel

01/06/2016 12:35:28
Quote Anchor link
Ik zie zo direct niet echt een waarschuwing staan in het stukje waar je naar linkt, daar wordt enkel uitgelegd wat er gebeurt bij welke instelling. Ook staat daar niet dat een bepaalde instelling catastrofaal is voor performance maar simpelweg dat er meer controles plaatsvinden. Indien dit echt een deuk in je performance zou slaan zou hier wel een melding over gemaakt worden. En als performance echt een issue is (high traffic site) dan heb je hier al andere voorzieningen voor getroffen (load balancing etc.).

Je moet je ook blijven afvragen waar je (veel) winst kan pakken he. Mogelijk is het beste wat je kunt halen met het spelen met deze instellingen een micro optimalisatie. Die mogelijk weer teniet wordt gedaan door brakke code of trage queries.

Zo begrijp ik bijvoorbeeld niet (als dit echt een concrete situatie is en niet enkel bedoeld was ter illustratie) dat je vanuit index.php #1 index.php #2 required. Waarom zet je niet meteen index.php #2 in de document root en laad je de rest dynamisch in met behulp van een autoloader (en dus niet met require of include)? Indien dit een concreet geval was dan zit naar alle waarschijnlijkheid de echte bottleneck nog altijd in de applicatie zelf. Weinig optimalisatie hieromheen zal dat verhelpen :).
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.