OPcache PHP opstartsoptimering

For websteder, der er baseret på WordPress , Joomla eller Laravel og ikke har noget brugerspecifikt indhold, anbefales det at opbevare alle sider i en statisk HTML-cache og kun regenerere cachen manuelt (eller automatisk), når der foretages ændringer i backend. Men hvis siden indeholder dynamisk indhold, der afhænger af sessioner og cookies eller også af sprog og placering, er OPcache egnet .


Den såkaldte starttid for alle tre nævnte systemer er over 100 ms med en nyinstalleret CentOS7-server (med SSD og PHP 7.1). Hver gang et PHP-script udføres, skal det kompileres til bytecode ved kørsel. OPcache implementerer nu en cache til denne bytecode - hvis det samme PHP-script udføres med den næste anmodning, behøver det ikke at blive kompileret igen. Efter aktivering af OPcache indstiller vi følgende indstillinger:

9006cec6c5d3d2498ee26c5bfd91590a

Henrettelsestiden (i gennemsnit over 10 henrettelser) er nu reduceret betydeligt:

WordPress 4.7.4 Joomla 3.7 Laravel 5.4
uden OPcache 295 ms 201 ms 110 ms
med OPcache 54 ms 59 ms 13 ms
Faktor 5,5 3,5 8,5

Da vi indstiller validate_timestamps til 0 og samtidig revaliderer_freq til en varighed på en dag, genopbygges cachen næsten aldrig automatisk (vi gør bevidst dette manuelt). Med en lille git-kroge udføres et PHP-script med hver "pull". Sådan aktiveres krogen:

a1678610c8b4c7db5997375944183830

a1678610c8b4c7db5997375944183830

Følgende hjælperfunktion er også nyttig til at måle individuelle kodedele (eller hele udførelsestiden):

085f4291bbcc4e8a64bbea951ff49ab9

Hvis du ønsker at få nyttige oplysninger som status, brugt hukommelse eller cachelagret antal filer, bruger du denne PHP-funktion:

3f6309d04bc7e48dd909859321b96209

For at drage fordel af OPcache i et lokalt udviklingsmiljø (som generelt ikke anbefales) bruger vi et trick.

OPcache er aktiv på alle servere, der har OPcache-modulet installeret, og som indstillingen opcache.enable ikke er angivet eksplicit. Vi lader det være sådan. Vi indstiller kun opcache.validate_timestamps = 1 i php.ini. Dette betyder, at opcache.revalidate_freq = 2. Dette betyder, at OPcache næsten genvalideres kontinuerligt for hvert projekt. For de projekter, hvor vi vil aktivere OPcache permanent, bruger vi projektrelaterede i .htaccess følgende indstilling:

1dd64a3f2fe4425b29b1409410fe3fc0

Derefter genstarter vi webserveren og opretter følgende script:

91fb5289160e410607c9ea89112a575b

Dette script rydder cachen og genopbygger den på samme tid. Nu indstiller vi en arbejdsområde-relateret RunOnSave- kommando i vores foretrukne editor VSCode:

91fb5289160e410607c9ea89112a575b

Tilbage