Runtime-konfiguration
Funktionen hos dessa kommandon påverkas av inställningar i `php.ini`.
Även om standardinställningarna för APCu är tillräckliga för många installationer, bör seriösa användare överväga att justera följande parametrar.
Det finns ett beslut att fatta vid konfigurationen av APCu: Hur mycket minne ska tilldelas APCu? Den ini-direktiv som styr detta är `apc.shm_size`. Läs sektionen om detta noggrant nedan.
När servern körs bör skriptet `apc.php`, som levereras med tillägget, kopieras någonstans i dokumentroten och visas med en webbläsare, eftersom det ger en detaljerad analys av de interna funktionerna i APCu. Om GD är aktiverat i PHP, kommer det till och med att visa några intressanta grafer.
Om APCu fungerar kommer "Cache full count"-numret (till vänster) att visa antalet gånger som cachen har nått maximal kapacitet och har behövt rensa poster för att frigöra minne. Under rensning, om `apc.ttl` är angivet, kommer APCu först försöka ta bort förfallna poster, dvs. poster vars TTL har gått ut, eller poster utan TTL som inte har använts under de senaste `apc.ttl` sekunderna. Om `apc.ttl` inte är angivet, eller om borttagningen av förfallna poster inte frigör tillräckligt med utrymme, kommer APCu att rensa hela cachen.
Antalet rensningar bör vara minimalt i en välkonfigurerad cache. Om cachen ständigt fylls och därmed tvångsmässigt frigörs, kommer detta att ha en negativ effekt på skriptprestandan. Det enklaste sättet att minimera detta antal är att tilldela mer minne till APCu.
När APCu kompileras med mmap-stöd (Memory Mapping) kommer det endast att använda ett minnessegment, till skillnad från när APCu byggs med SHM (SysV Shared Memory)-stöd som använder flera minnessegment. MMAP har ingen maximal gräns som SHM har i `/proc/sys/kernel/shmmax`. Generellt rekommenderas MMAP-stöd eftersom det återtar minnet snabbare när webbservern startas om och i allmänhet minskar minnesallokeringspåverkan vid uppstart.
APCu-konfigurationsalternativ
Namn | Standard | Ändringsbar | Förändringslogg |
---|---|---|---|
apc.enabled | 1 | INI_SYSTEM | |
apc.shm_segments | 1 | INI_SYSTEM | |
apc.shm_size | "32M" | INI_SYSTEM | |
apc.entries_hint | 4096 | INI_SYSTEM | |
apc.ttl | 0 | INI_SYSTEM | |
apc.gc_ttl | 3600 | INI_SYSTEM | |
apc.mmap_file_mask | NULL | INI_SYSTEM | |
apc.slam_defense | 0 | INI_SYSTEM | |
apc.enable_cli | 0 | INI_SYSTEM | |
apc.use_request_time | 0 | INI_ALL | Före APCu 5.1.19 var standardvärdet 1. |
apc.serializer | "php" | INI_SYSTEM | Före APCu 5.1.15 var standardvärdet "default". |
apc.coredump_unmap | 0 | INI_SYSTEM | |
apc.preload_path | NULL | INI_SYSTEM |
För ytterligare detaljer och definitioner av INI_* lägen, se var en konfigurationsinställning kan sättas.
Här är en kort förklaring av konfigurationsdirektiv:
- **apc.enabled**: bool
`apc.enabled` kan sättas till 0 för att inaktivera APC. Detta är främst användbart när APC är statiskt kompilerat i PHP, eftersom det inte finns något annat sätt att inaktivera det (när det är kompilerat som en DSO kan tilläggsraden i `php.ini` helt enkelt kommenteras bort).
- **apc.shm_segments**: int
Antal delade minnessegment som ska tilldelas för kompilatorcachen. Om APC körs slut på delat minne men `apc.shm_size` är satt så högt som systemet tillåter, kan det förhindra att APC tömmer sitt minne genom att öka detta värde.
- **apc.shm_size**: string
Storleken på varje delat minnessegment anges med förkortad notation enligt beskrivningen i denna FAQ. Som standard har vissa system (inklusive de flesta BSD-varianter) mycket låga gränser för storleken på ett delat minnessegment.
- **apc.entries_hint**: int
En "ledtråd" om antalet distinkta variabler som kan lagras. Ställ in till noll eller utelämna om du inte är säker.
- **apc.ttl**: int
Betrakta cache-poster utan en uttrycklig TTL som förfallna om de inte har använts på detta antal sekunder. Detta tillåter i praktiken att sådana poster tas bort opportunistiskt under en cacheinmatning, eller innan en fullständig rensning. Eftersom borttagningen är opportunistisk, kan poster fortfarande vara läsbara även om de är äldre än `apc.ttl` sekunder. Denna inställning påverkar inte cache-poster som har en uttrycklig TTL specificerad.
- **apc.gc_ttl**: int
Antalet sekunder som en cachepost kan förbli på skräpsamlingslistan. Detta värde ger en säkerhetsåtgärd i händelse av att en serverprocess dör medan den kör en cachead källfil; om den källfilen ändras, kommer det tilldelade minnet för den gamla versionen inte att återtas förrän denna TTL uppnås. Ställ in till noll för att inaktivera denna funktion.
- **apc.mmap_file_mask**: string
Om kompilerad med MMAP-stöd genom att använda `--enable-mmap`, är detta den `mktemp`-liknande `file_mask` som skickas till mmap-modulen för att avgöra om din mmap:ade minnesregion kommer att vara fil-baserad eller delat minnesbaserad. För ren filbaserad mmap, sätt den till något som `/tmp/apc.XXXXXX` (exakt 6 X). För att använda POSIX-stil `shm_open/mmap`, sätt ett `.shm` någonstans i din mask, till exempel `/apc.shm.XXXXXX`. Du kan också ställa in den till `/dev/zero` för att använda din kernels `/dev/zero`-gränssnitt för anonymt mmap:at minne. Om du inte definierar detta tvingas en anonym mmap.
- **apc.slam_defense**: bool
På mycket belastade servrar, när du startar servern eller ändrar filer, kan du skapa en situation där många processer försöker cachea samma fil samtidigt. Att sätta `apc.slam_defense` till 1 kan hjälpa till att förhindra att flera processer cachear samma fil samtidigt genom att införa en sannolikhetsmekanism. Om samma nyckel försöker cacheas inom en kort period av olika processer, hoppar den över cachningen för den aktuella processen för att minska potentiella cache-kollisioner.
- **apc.enable_cli**: int
Mest för testning och felsökning. Att sätta detta aktiverar APC för CLI-versionen av PHP. Under normala omständigheter är det inte idealiskt att skapa, fylla och förstöra APC-cachen vid varje CLI-förfrågan, men för olika testsituationer är det användbart att kunna aktivera APC för CLI-versionen av PHP enkelt.
- **apc.serializer**: string
Används för att konfigurera APC för att använda en tredjeparts serializer.
- **apc.coredump_unmap**: bool
Aktiverar APC-hantering av signaler, som `SIGSEGV`, som skriver core-filer när de signaleras. När dessa signaler tas emot försöker APC att avmontera det delade minnessegmentet för att exkludera det från core-filen. Denna inställning kan förbättra systemstabiliteten när fatala signaler tas emot och ett stort APC delat minnessegment är konfigurerat.
Varning: Denna funktion är potentiellt farlig. Att avmontera det delade minnessegmentet i en fatal signalhanterare kan orsaka odefinierat beteende om ett fatalt fel uppstår.
- **apc.preload_path**: string
Ställ in en sökväg till katalogen som APC kommer att ladda cachedata från vid start.
- **apc.use_request_time**: bool
Använder starttiden för SAPI-förfrågan för TTL.
Sidslut
Orginalhemsidan på Engelska :https://www.php.net/manual/en/apcu.configuration.php
Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorhjälp.se som har sponsrat Linux.se med webserver.