Ukládání do mezipaměti Apc. APC v PHP: Koncepce, instalace, použití APC. Povolte podporu APC v Magento


APC je zkratka pro Alternativní PHP cache. Ruský text je alternativní PHP cacher. K čemu se používá? Stejně jako ostatní populární cachery jako XCache a eAccelerator se používá ke zvýšení rychlosti PHP skriptů. Pokud máte svůj vlastní server a máte obavy o výkon PHP skriptů, pak může být řešením vašeho problému APC. V dnešním článku se o APC dozvíme více, naučíme se jej nainstalovat a otestovat a používat APC caching při psaní PHP skriptů.

Co je to akcelerátor APC?

Plynový pedálAPC(Alternative PHP Cache) je bezplatný a otevřený cacher operačních kódů pro PHP. Byl navržen jako bezplatný, otevřený a stabilní rámec pro ukládání do mezipaměti a optimalizaci zdrojového kódu PHP. APC je ve fázi vývoje. V současné době podporuje PHP 4 a PHP 5, včetně 5.3. Pravděpodobně bude součástí standardní verze jádra PHP 6.
Jak je dosaženo rychlosti práce?PHP?
Když dojde ke zpoždění při načítání vašeho webu, vyvstává otázka – Proč? Faktem je, že při provádění standardního volání PHP skriptu je tento kompilován pokaždé znovu. To znamená, že stejná práce se provádí několikrát. Pokud se jedná o malý projekt, mohou být zpomalení nepatrná, dokonce neviditelná. Pokud ale máte velký projekt (web), pak jste si všimli, že při přístupu dochází ke zpoždění načítání stránky, a to i přes to, že je web dobře optimalizován z hlediska komprese html a css komprese. Pro přehlednost se podívejme, jak se standardní požadavek provádí bez použití PHP akcelerátorů:

Zároveň probíhají exekuce kompilace kódu na každou žádost. Zpracování požadavku trvá hodně času, a proto se zpomaluje. Aby se to obešlo, byly vynalezeny akcelerátory, jejichž zástupcem je APC. Zkompilovaný kód uloží do mezipaměti na disku, na který se po přístupu vytiskne výsledek. To zvyšuje rychlost PHP. APC může pracovat ve dvou režimech, které jsou nakonfigurovány v souboru /etc/php.d/apc.ini, variabilní apc.stat. Proměnná může nabývat hodnot 1 a 0 (apc.stat=0 nebo apc.stat=1). Při použití režimu apc.stat=1 skripty pracují poněkud pomaleji, protože kontrolují modifikaci souboru, ale tím se vyhnete problémům při změně kódu, ale výsledek zůstane stejný. Proto vám doporučuji nastavit hodnotu proměnné na 1.
Po instalaci akcelerátoru APC bude schéma provádění požadavků následující:

Instalace akcelerátoru APC

Protože aktualizované verze jsou do apt přidávány velmi pozdě. Proto nainstalujeme APC přes PECL:

Sudo apt-get remove --purge php-apc sudo apt-get install libpcre3-dev sudo pecl install apc
Při instalaci nastavíme následující konfiguraci (YMMV):
Povolit interní ladění v APC : žádná podpora Povolit na žádost informace o souborech použitých z mezipaměti APC : ne Povolit zámky otáčení (EXPERIMENTÁLNÍ) : ne Povolit ochranu paměti (EXPERIMENTÁLNÍ) : ne Povolit mutexy pthread (výchozí) : ano Povolit čtení pthread / zápis zámků (EXPERIMENTÁLNÍ) : ne Nyní musíte povolit APC v nastavení, protože... toto se nedělá automaticky. K tomu tvoříme apc.ini soubor v příslušném adresáři: sudo vim /etc/php5/conf.d/apc.ini a do tohoto souboru zapište následující nastavení (doporučeno pro práci s Magento) extension=apc.so apc.enabled=1 apc.shm_size=512M apc.num_files_hint=10000 apc.user_entries_hint=10000 apc.max_file_size=5M apc.stat=0 apc.optimization=0 apc.shm_1segments=1 apc.shm_segments apc.cache_by_default=1 apc.include_once_override=1

Povolte podporu APC v Magento

Otevřete konfigurační soubor Magento: vi app/etc/local.xml a do globální sekce přidejte následující kód:


apc Soubor 0 1 MAGE_ nebo databáze apc 0 1 MAGE_


Kde mezi značkami „Prefix“ je uveden stručný popis obchodu, takže je možné použít APC pro ukládání několika obchodů postavených na jednom Magento.

Jak zkontrolovat provoz APC?

Nejprve byste si měli všimnout, že skripty Magento PHP začínají pracovat rychleji. Použití Firebug a plugin pro něj, například YSlow, pro vyhodnocení rychlosti webu. Rozšíření Firebug pro Firefox si můžete stáhnout zde. Kromě toho můžete použít soubor apc.php zkopírováním z distribuční složky APC do složky veřejnost vašeho projektu: sudo cp /usr/share/php/apc.php /vaše cesta k veřejnosti Nyní můžete tento soubor otevřít ve svém prohlížeči: http://yourhost.local/apc.php 9. dubna 2015 12:12 1 889 zobrazení | bez komentáře

Co je APC?

APC je systém pro ukládání kódu PHP do mezipaměti, který vám umožňuje zrychlit váš web. PHP je dynamický skriptovací jazyk na straně serveru, který musí být analyzován, zkompilován a spuštěn na serveru pokaždé, když je požadována stránka. V mnoha případech se však požadavky opakují, a proto musí cloudový server každý z nich znovu zpracovat.

V tomto případě přichází na pomoc APC neboli Alternative PHP Cache. Tento nástroj ukládá PHP kód do operační paměti a v případě potřeby jej načítá. V podstatě obchází zpracování a kompilaci kódu a minimalizuje zatížení serveru.

Tato příručka předvede instalaci a konfiguraci APC.

Poznámka: Chcete-li průvodce dokončit, musíte mít nejprve oprávnění root a také .

Instalace APC

Před instalací mezipaměti APC je třeba nainstalovat některé její závislosti. Chcete-li to provést, použijte následující příkaz:

sudo apt-get install php-pear php5-dev make libpcre3-dev

Poté můžete nainstalovat APC pomocí příkazu pecl:

sudo pecl nainstalovat apc

Chcete-li dokončit instalaci, musíte upravit soubor php.ini:

přidat na konec následující řádek:

extension=apc.so

Uložte a zavřete soubor a restartujte Apache:

restart služby sudo apache2

Chcete-li zjistit, zda je APC povoleno, otevřete informační stránku PHP. Pokud žádný neexistuje, vytvořte prázdný soubor php ve složce /var/www:

nano /var/www/info.php

A přidejte do něj tento kód:

phpinfo();
?>

Uložte a zavřete soubor a poté otevřete prohlížeč. Na obrazovce se objeví všechny informace o aktuální instalaci PHP. Pokud je APC povoleno, stránka to bude indikovat. Obecně se nedoporučuje opouštět tento soubor, protože může poskytnout přístup k citlivým datům neoprávněným uživatelům. Po kontrole jej vyjměte.

Nastavení APC

Po instalaci se mezipaměť APC spustí s výchozím nastavením. V jeho konfiguracích jsou dvě velmi důležitá nastavení. Otevřete tedy soubor php.ini:

sudo nano /etc/php5/apache2/php.ini

Pod dříve přidaný řádek, který zahrnuje APC, přidejte následující řádek:

apc.shm_size = 64

Tím se přidělí 64 MB paměti RAM pro mezipaměť APC. V závislosti na požadavcích nebo omezeních virtuálního privátního serveru se tato hodnota může lišit.

Níže je třeba přidat ještě jeden řádek:

Nastavení apc.stat kontroluje skript při každém požadavku, aby zkontroloval změny. Pokud byla změněna, znovu ji zkompiluje a uloží novou verzi do mezipaměti. Toto je standardní chování APC. Hodnota 0 na tomto řádku řekne APC, aby nekontrolovala změny ve skriptu. To zlepšuje výkon, ale má to nevýhodu: pokud dojde ke změnám ve skriptu PHP, nebudou provedeny, dokud nebude cloudový server restartován. Nastavení hodnoty na 0 se proto doporučuje pouze na webech, které jsou ve výrobě.

Nyní, když je mezipaměť APC nainstalována a spuštěna, můžete zkontrolovat její stav a výkon. Najděte soubor apc.php ve složce /usr/share/php/ a přesuňte jej do složky přístupné prohlížeči – například www.

Chování těchto funkcí závisí na nastavení v php.ini.

Přestože výchozí nastavení APC je vhodné pro většinu instalací, některé aplikace mohou vyžadovat jemnější doladění.

Při konfiguraci APC je třeba věnovat pozornost dvěma hlavním bodům. První je, kolik paměti zpřístupnit APC, a druhé, zda APC zkontroluje, zda byl soubor změněn při každém požadavku. Tato nastavení jsou řízena parametry apc.shm_size A apc.stat, resp. Přečtěte si prosím velmi pozorně části týkající se nastavení těchto parametrů.

Jakmile je server spuštěn, skript apc.php, dodávaný s tímto rozšířením, musí být zkopírován do "docroot" a práva k němu musí umožňovat jeho spuštění prostřednictvím prohlížeče. Tento skript poskytuje podrobné informace o tom, jak APC funguje. Pokud je GD povoleno v PHP, pak tento skript také zobrazí užitečné grafy. Samozřejmě první věc, která bude zajímavá, je, zda APC něco cacheuje. Pokud APC běží, pak hodnota Plný počet mezipaměti(vlevo) zobrazí, kolikrát se mezipaměť zcela zaplnila a byla nucena násilně odstranit položky, které nebyly naposledy zpřístupněny apc.ttl sekundy Čím nižší je toto číslo, tím lépe je mezipaměť nakonfigurována. Pokud toto číslo neustále roste, pak musí APC neustále čistit staré záznamy a celý smysl ukládání do mezipaměti je ztracen. Nejlepší způsob, jak toto číslo snížit, je přidat paměť do APC. Pokud to nelze provést, musíte znovu nakonfigurovat apc.filtry omezit sadu skriptů uložených v mezipaměti.

Pokud je APC postaveno s podporou mmap (Memory Mapping), bude používat pouze jeden segment paměti, pokud je naopak APC postaveno s podporou SHM (SysV Shared Memory), použije několik segmentů. MMAP nemá žádný maximální limit, na rozdíl od SHM, který je omezený /proc/sys/kernel/shmmax. Obecně se doporučuje používat MMAP, protože při restartu webového serveru alokuje paměť mnohem rychleji, což ovlivňuje rychlost spouštění serveru.

Konfigurační parametry APC
název Výchozí Místo změny Seznam změn
apc.povoleno "1" PHP_INI_SYSTEM PHP_INI_SYSTEM v APC 2. PHP_INI_ALL v APC<= 3.0.12.
apc.shm_segments "1" PHP_INI_SYSTEM
apc.shm_size "32 milionů" PHP_INI_SYSTEM
apc.shm_strings_buffer "4 miliony" PHP_INI_SYSTEM K dispozici s APC 3.1.4.
apc.optimalizace "0" PHP_INI_ALL PHP_INI_SYSTEM v APC 2. Odstraněno v APC 3.0.13.
apc.num_files_hint "1000" PHP_INI_SYSTEM
apc.user_entries_hint "4096" PHP_INI_SYSTEM K dispozici s APC 3.0.0.
apc.ttl "0" PHP_INI_SYSTEM K dispozici s APC 3.0.0.
apc.user_ttl "0" PHP_INI_SYSTEM K dispozici s APC 3.0.0.
apc.gc_ttl "3600" PHP_INI_SYSTEM
apc.cache_by_default "1" PHP_INI_ALL PHP_INI_SYSTEM v APC<= 3.0.12. Доступно с APC 3.0.0.
apc.filtry NULA PHP_INI_SYSTEM
apc.mmap_file_mask NULA PHP_INI_SYSTEM
apc.slam_defense "1" PHP_INI_SYSTEM K dispozici s APC 3.0.0. Před APC 3.1.4, výchozí hodnota "0" (vypnuto).
apc.file_update_protection "2" PHP_INI_SYSTEM K dispozici s APC 3.0.6.
apc.enable_cli "0" PHP_INI_SYSTEM K dispozici s APC 3.0.7.
apc.max_file_size "1 milion" PHP_INI_SYSTEM K dispozici s APC 3.0.7.
apc.use_request_time "1" PHP_INI_ALL K dispozici s APC 3.1.3.
apc.stat "1" PHP_INI_SYSTEM K dispozici s APC 3.0.10.
apc.write_lock "1" PHP_INI_SYSTEM K dispozici s APC 3.0.11.
apc.report_autofilter "0" PHP_INI_SYSTEM K dispozici s APC 3.0.11.
apc.serializer "výchozí" PHP_INI_SYSTEM K dispozici s APC 3.1.0.
apc.include_once_override "0" PHP_INI_SYSTEM K dispozici s APC 3.0.12.
apc.rfc1867 "0" PHP_INI_SYSTEM K dispozici s APC 3.0.13.
apc.rfc1867_prefix "nahrát_" PHP_INI_SYSTEM
apc.rfc1867_name "APC_UPLOAD_PROGRESS" PHP_INI_SYSTEM
apc.rfc1867_freq "0" PHP_INI_SYSTEM
apc.rfc1867_ttl "3600" PHP_INI_SYSTEM K dispozici s APC 3.1.1.
apc.localcache "0" PHP_INI_SYSTEM
apc.localcache.size "512" PHP_INI_SYSTEM Dostupné v APC 3.0.14 - 3.1.11.
apc.coredump_unmap "0" PHP_INI_SYSTEM K dispozici s APC 3.0.16.
apc.stat_ctime "0" PHP_INI_SYSTEM K dispozici s APC 3.0.13.
apc.preload_path NULA PHP_INI_SYSTEM K dispozici s APC 3.1.1.
apc.file_md5 "0" PHP_INI_SYSTEM K dispozici s APC 3.1.1.
apc.canonicalize "1" PHP_INI_SYSTEM K dispozici s APC 3.1.1.
apc.lazy_functions 0 PHP_INI_SYSTEM K dispozici s APC 3.1.3.
apc.lazy_classes 0 PHP_INI_SYSTEM K dispozici s APC 3.1.3.
Podrobný popis konstant PHP_INI_* naleznete v části Kde lze nastavit možnosti konfigurace.

Stručné vysvětlení konfiguračních direktiv.

Pokud nainstalujete apc.povoleno nastavena na 0, APC nebude povoleno. To je užitečné, když je APC v PHP staticky povoleno a neexistují žádné jiné možnosti, jak jeho použití zakázat. Pokud je APC postaveno jako DSO, můžete řádek jednoduše okomentovat rozšíření PROTI php.ini.

Apc.shm_segments celé číslo

Počet segmentů sdílené paměti přidělených pro mezipaměť. Pokud společnost APC využila veškerou dostupnou sdílenou paměť a apc.shm_size tak velký, jak to systém umožňuje, může pomoci zvýšení tohoto parametru.

Apc.shm_size tětiva

Velikost segmentu sdílené paměti, specifikovaná ve zkratce (viz tento FAQ). Ve výchozím nastavení některé systémy (včetně většiny variant BSD) omezují tuto hodnotu na extrémně nízkou hodnotu.

Apc.shm_strings_buffer tětiva

Množství paměti přidělené sdílené mezipaměti řetězců používané interními procesy APC. Velikost musí být ukončena příponou M nebo G pro označení megabajtů a gigabajtů. Použití této možnosti může snížit paměťovou stopu pracovních procesů PHP-FPM, protože stejné řetězce budou uloženy v paměti pouze jednou a mohou být použity všemi pracovními procesy.

Apc.optimalizace celé číslo

Úroveň optimalizace. Nula zakáže optimalizaci. Čím vyšší je tato hodnota, tím agresivnější optimalizace bude použita. Velký nárůst rychlosti nečekejte. Toto je experimentální funkce.

Apc.num_files_hint celé číslo

Nápověda k počtu jedinečných souborů použitých na vašem webu. Nastavte ji na nulu nebo ji nezadávejte vůbec, pokud si nejste jisti. Toto nastavení je užitečné, když máte mnoho tisíc souborů.

Apc.user_entries_hint celé číslo apc.file_update_protection celé číslo

Když se soubor mění za chodu, mělo by k tomu dojít atomickým způsobem. To znamená, že nejprve musí být zapsán do dočasného souboru a poté přesunut ( mv) do své cílové pozice. Mnoho textových editorů cp, dehet a ostatní to nedělají. To může mít za následek požadavek na soubor (a ukládání do mezipaměti) během jeho zapisování. Nastavení apc.file_update_protection nastavuje zpoždění ukládání do mezipaměti pro zcela nové soubory. Výchozí nastavení je 2 sekundy. To znamená, že pokud časové razítko změny souboru ( mtime) říká, že pokud od úpravy souboru uplynuly méně než 2 sekundy, nebude uložen do mezipaměti. Nešťastník, který se pokusí dostat k napůl uloženému souboru, zažije podivné chování, ale alespoň to nebude trvat dlouho. Pokud jsou všechny soubory webového serveru aktualizovány atomicky, pomocí metod, jako je např rsync(který se aktualizuje správně), lze toto chování zakázat nastavením tohoto parametru na nulu. Pokud je systém I/O přetížený, některé aktualizace mohou trvat déle než dvě sekundy a toto nastavení by mělo být odpovídajícím způsobem zvýšeno.

Apc.enable_cli celé číslo

Více pro testování a ladění. Toto nastavení umožňuje APC pro verzi CLI PHP. Při běžné práci nebude spouštění APC, které vytvoří, naplní a zničí mezipaměť pokaždé, když spustíte skript v konzoli, nejlepší nápad. Ale pro účely testování a ladění můžete snadno povolit APC pro CLI.

Apc.max_file_size celé číslo

Neukládá do mezipaměti soubory větší, než je velikost určená tímto nastavením. Výchozí hodnota je 1M.

Apc.stat celé číslo

Při změně tohoto nastavení buďte opatrní. To je ve výchozím nastavení povoleno, což způsobí, že společnost APC kontroluje soubory skriptů při každém požadavku, aby zjistila, zda byly změněny. Pokud byly změněny, budou znovu zkompilovány a znovu uloženy do mezipaměti. Pokud toto nastavení zakážete, pak APC takovou kontrolu neprovede, a pokud byl soubor již uložen do mezipaměti a poté změněn, pak se nová verze do mezipaměti nedostane. Recaching bude vyžadovat restartování webového serveru. Upozorňujeme, že webové servery nakonfigurované pro použití FastCGI nemusí po restartu vymazat mezipaměť. V průmyslových prostředích, kde ke změnám souborů dochází velmi zřídka, může zakázání této možnosti výrazně zlepšit výkon.

U souborů načtených přes zahrnuto/vyžadováno tato možnost funguje skvěle, ale mějte na paměti, že pokud zahrnete soubor do relativní cesty (v Unixu jakoukoli cestu nezačínající na /), APC zkontroluje jedinečnost. Pokud jsou použity absolutní cesty, APC tuto kontrolu přeskočí a jako jedinečný identifikátor souboru použije absolutní cestu.

Apc.write_lock booleovský

Na silně zatížených serverech se při spuštění serveru nebo při úpravě mnoha souborů současně může společnost APC pokusit zkompilovat a uložit stejný soubor vícekrát současně. Uzamčení zápisu zajišťuje, že pouze jeden proces se pokusí zkompilovat a uložit do mezipaměti soubor bez mezipaměti. Jiné procesy, které potřebují tento soubor použít, použijí jeho verzi bez mezipaměti, místo aby čekaly, až se objeví v mezipaměti.

Apc.report_autofilter booleovský

Zaznamenává všechny skripty, které byly vyloučeny z mezipaměti kvůli dřívějším nebo pozdním problémům s propojením.

Apc.serializer tětiva

Říká společnosti APC, aby použila serializátor třetí strany.

Apc.include_once_override booleovský

Optimalizuje hovory zahrnout_jednou A vyžadovat_jednou abyste zabránili drahým systémovým voláním.

Pozornost

Tato funkce je EXPERIMENTÁLNÍ. Chování této směrnice, její název a dokumentace se mohou v budoucích verzích APC bez upozornění změnit. Používejte jej na vlastní nebezpečí.

Apc.rfc1867 booleovský

Zachycovač průběhu stahování souboru RFC1867 je v APC k dispozici pouze v případě, že je vytvořen s PHP 5.2.0 nebo vyšším. Pokud je to povoleno, pak jakýkoli soubor nahraný na server obsahující ve formuláři před polem souboru pole s názvem APC_UPLOAD_PROGRESS, donutí APC automaticky vytvořit vlastní záznam mezipaměti, jako je upload_ klíč, Kde klíč je hodnota pole APC_UPLOAD_PROGRESS.

Pamatujte, že skryté pole APC_UPLOAD_PROGRESS musí jít do pole se souborem, jinak bude práce chybná.

Vezměte prosím na vědomí, že sledování stahování souborů není bezpečné pro vlákna, takže pokud během prvního stahování existuje nový soubor se stejným klíčem, sledování prvního souboru bude zastaveno.

Všimněte si, že hodnotit bude k dispozici pouze po dokončení všech aktuálních stahování.

Příklad #1 Příklad použití apc.rfc1867

print_r (apc_fetch ( "upload_ $_POST [ APC_UPLOAD_PROGRESS ] " ));
?>

Výsledek spuštění tohoto příkladu bude něco takového:

Pole ( => 1142543 => 1142543 => 1828068,8 => test => soubor => /tmp/php8F => 0 => 1)

Apc.rfc1867_prefix tětiva

Předpona klíče k použití v záznamu uživatelské mezipaměti vytvořeného funkcí sledování průběhu stahování rfc1867.

Apc.rfc1867_name tětiva

Určuje název pro skryté pole formuláře, které umožní proces stahování APC a určí příponu klíče mezipaměti uživatele.

Apc.rfc1867_freq tětiva

Frekvence, s jakou bude položka mezipaměti uživatele aktualizována během stahování souboru. Lze ji zadat buď v procentech, nebo uvedením velikosti v bajtech. V případě potřeby můžete použít přípony "k", "m" A "G"(nerozlišují se malá a velká písmena) pro kilobajty, megabajty a gigabajty. Pokud zadáte nulu, aktualizace proběhnou co nejrychleji, ale to může zpomalit načítání.

Apc.rfc1867_ttl celé číslo

TTL pro záznamy rfc1867.

Apc.localcache booleovský

Umožňuje neblokování stínových mezipamětí místních procesů, což snižuje množství blokování během zápisů do mezipaměti.

Apc.localcache.size celé číslo

Velikost místní mezipaměti stínu procesů by měla být poměrně velká, přibližně polovina apc.num_files_hint .

Apc.coredump_unmap booleovský

Umožňuje APC zachycovat signály, jako je SIGSEGV, který při vydání zapisuje Coredump. Když jsou tyto signály přijaty, APC se pokusí uvolnit veškerou sdílenou paměť, aby ji nezahrnula do Coredump. Toto nastavení může zvýšit stabilitu systému, když byl přijat kritický signál a APC je nakonfigurováno pro použití velkého množství paměti.

Pozornost

Tato funkce je potenciálně nebezpečná. Uvolnění segmentů sdílené paměti při přijetí kritického signálu může vést k nepředvídatelnému chování.

Komentář:

Ačkoli některá jádra poskytují možnost ignorovat některé segmenty sdílené paměti při zápisu souboru jádra, tyto implementace mohou také ignorovat důležité segmenty paměti, jako je tabulka výsledků Apache.

apc.stat_ctime celé číslo

Zkontrolujte pomocí ctime, abyste se vyhnuli problémům způsobeným programy jako svn nebo rsync a ujistěte se, že se inode nezměnil od posledního shromažďování statistik. APC obvykle kontroluje pouze mtime.

Apc.canonicalize bool

Pokud je zakázáno, relativní cesty jsou převedeny na kanonické v režimu bez statistik. Pokud je tato možnost povolena, soubory připojené prostřednictvím obálky datového proudu nebudou ukládány do mezipaměti, protože realpath() nepodporuje obálky proudu.

Apc.preload_path tětiva

Volitelný. Určuje cestu, kterou APC používá k načítání dat uložených v mezipaměti během spouštění.

Apc.use_request_time bool

Použijte čas zahájení požadavku SAPI pro TTL.

Apc.file_md5 bool

Napište md5 hash souborů.

Apc.lazy_functions celé číslo

Umožňuje líné načítání funkcí.

Apc.lazy_classes celé číslo

Umožňuje líné načítání tříd.

Konfigurační soubor se nejčastěji nachází v /etc/php.d/apcu.ini. Příklad konfiguračního souboru pro server s 8 GB RAM:

extension=apcu.so
apc.enable_cli = 1
apc.shm_segments = 1
apc.shm_size = 512 milionů
apc.stat = 1
apc.ttl = 0
apc.user_ttl = 0
apc.max_file_size = 1M
apc.num_files_hint = 16384
apc.user_entries_hint = 16384
apc.file_update_protection=10

Při použití PHP 5.3 zadejte extension=apc.so

Poznámka FastCGI: Populární mezipaměť operačních kódů APC pro PHP nemůže sdílet mezipaměť mezi procesy PHP FastCGI, pokud PHP nespravuje podřízené procesy. Účinnost mezipaměti je tedy omezena pomocí mod_fcgid; souběžné požadavky PHP budou používat různé mezipaměti operačních kódů.

Popis hlavních atributů konfigurace APCu

apc.shm_segments Počet alokovaných paměťových segmentů. Mnoho systémů BSD má nízké limity segmentů paměti. Výchozí hodnota je 1.
apc.shm_size Velikost segmentu sdílené paměti se nastavuje v megabajtech. Doporučujeme nastavit minimum na 128M, pro server s 8GB - 512M, pro server s 16GB - 1024M. Pokud je použito více segmentů, musí být velikost paměti vydělena počtem segmentů.
apc.stat Tato možnost umožňuje deaktivovat nebo povolit APC. Hodnota 1 - povoleno, 0 - zakázáno.
apc.ttl Doba ukládání souborů PHP do mezipaměti. Při nastavení na 0 umožňuje vymazání celé mezipaměti, když je přidělená paměť plná.
apc.user_ttl Doba ukládání uživatelských dat do mezipaměti. Při nastavení na 0 umožňuje vymazání celé mezipaměti, když je přidělená paměť plná.
apc.max_file_size Maximální velikost souboru v mezipaměti.
apc.num_files_hint APC se používá k optimalizaci organizace ukládání dat souborů do paměti. Doporučujeme nastavit hodnotu vyšší než 10 000.
apc.user_entries_hint APC se používá k optimalizaci organizace ukládání uživatelských proměnných do paměti. Doporučujeme nastavit hodnotu vyšší než 10 000.
apc.file_update_protection Neukládejte do mezipaměti soubory vytvořené před méně než určenými sekundami. Umožňuje vyhnout se ukládání částečně zapsaného souboru do mezipaměti.

Chyba Nelze přidělit paměť pro fond

Funkce include(): Nelze alokovat paměť pro chybu fondu dochází, když je fragmentace paměti závažná; nastavení voleb apc.ttl a apc.user_ttl na nulu pomáhá minimalizovat fragmentaci paměti.

Chování těchto funkcí závisí na nastavení v php.ini.

Přestože výchozí nastavení APC je vhodné pro většinu instalací, některé aplikace mohou vyžadovat jemnější doladění.

Při konfiguraci APC je třeba věnovat pozornost dvěma hlavním bodům. První je, kolik paměti zpřístupnit APC, a druhé, zda APC zkontroluje, zda byl soubor změněn při každém požadavku. Tato nastavení jsou řízena parametry apc.shm_size A apc.stat, resp. Přečtěte si prosím velmi pozorně části týkající se nastavení těchto parametrů.

Jakmile je server spuštěn, skript apc.php, dodávaný s tímto rozšířením, musí být zkopírován do "docroot" a práva k němu musí umožňovat jeho spuštění prostřednictvím prohlížeče. Tento skript poskytuje podrobné informace o tom, jak APC funguje. Pokud je GD povoleno v PHP, pak tento skript také zobrazí užitečné grafy. Samozřejmě první věc, která bude zajímavá, je, zda APC něco cacheuje. Pokud APC běží, pak hodnota Plný počet mezipaměti(vlevo) zobrazí, kolikrát se mezipaměť zcela zaplnila a byla nucena násilně odstranit položky, které nebyly naposledy zpřístupněny apc.ttl sekundy Čím nižší je toto číslo, tím lépe je mezipaměť nakonfigurována. Pokud toto číslo neustále roste, pak musí APC neustále čistit staré záznamy a celý smysl ukládání do mezipaměti je ztracen. Nejlepší způsob, jak toto číslo snížit, je přidat paměť do APC. Pokud to nelze provést, musíte znovu nakonfigurovat apc.filtry omezit sadu skriptů uložených v mezipaměti.

Pokud je APC postaveno s podporou mmap (Memory Mapping), bude používat pouze jeden segment paměti, pokud je naopak APC postaveno s podporou SHM (SysV Shared Memory), použije několik segmentů. MMAP nemá žádný maximální limit, na rozdíl od SHM, který je omezený /proc/sys/kernel/shmmax. Obecně se doporučuje používat MMAP, protože při restartu webového serveru alokuje paměť mnohem rychleji, což ovlivňuje rychlost spouštění serveru.

Konfigurační parametry APC
název Výchozí Místo změny Seznam změn
apc.povoleno "1" PHP_INI_SYSTEM PHP_INI_SYSTEM v APC 2. PHP_INI_ALL v APC<= 3.0.12.
apc.shm_segments "1" PHP_INI_SYSTEM
apc.shm_size "32 milionů" PHP_INI_SYSTEM
apc.shm_strings_buffer "4 miliony" PHP_INI_SYSTEM K dispozici s APC 3.1.4.
apc.optimalizace "0" PHP_INI_ALL PHP_INI_SYSTEM v APC 2. Odstraněno v APC 3.0.13.
apc.num_files_hint "1000" PHP_INI_SYSTEM
apc.user_entries_hint "4096" PHP_INI_SYSTEM K dispozici s APC 3.0.0.
apc.ttl "0" PHP_INI_SYSTEM K dispozici s APC 3.0.0.
apc.user_ttl "0" PHP_INI_SYSTEM K dispozici s APC 3.0.0.
apc.gc_ttl "3600" PHP_INI_SYSTEM
apc.cache_by_default "1" PHP_INI_ALL PHP_INI_SYSTEM v APC<= 3.0.12. Доступно с APC 3.0.0.
apc.filtry NULA PHP_INI_SYSTEM
apc.mmap_file_mask NULA PHP_INI_SYSTEM
apc.slam_defense "1" PHP_INI_SYSTEM K dispozici s APC 3.0.0. Před APC 3.1.4, výchozí hodnota "0" (vypnuto).
apc.file_update_protection "2" PHP_INI_SYSTEM K dispozici s APC 3.0.6.
apc.enable_cli "0" PHP_INI_SYSTEM K dispozici s APC 3.0.7.
apc.max_file_size "1 milion" PHP_INI_SYSTEM K dispozici s APC 3.0.7.
apc.use_request_time "1" PHP_INI_ALL K dispozici s APC 3.1.3.
apc.stat "1" PHP_INI_SYSTEM K dispozici s APC 3.0.10.
apc.write_lock "1" PHP_INI_SYSTEM K dispozici s APC 3.0.11.
apc.report_autofilter "0" PHP_INI_SYSTEM K dispozici s APC 3.0.11.
apc.serializer "výchozí" PHP_INI_SYSTEM K dispozici s APC 3.1.0.
apc.include_once_override "0" PHP_INI_SYSTEM K dispozici s APC 3.0.12.
apc.rfc1867 "0" PHP_INI_SYSTEM K dispozici s APC 3.0.13.
apc.rfc1867_prefix "nahrát_" PHP_INI_SYSTEM
apc.rfc1867_name "APC_UPLOAD_PROGRESS" PHP_INI_SYSTEM
apc.rfc1867_freq "0" PHP_INI_SYSTEM
apc.rfc1867_ttl "3600" PHP_INI_SYSTEM K dispozici s APC 3.1.1.
apc.localcache "0" PHP_INI_SYSTEM
apc.localcache.size "512" PHP_INI_SYSTEM Dostupné v APC 3.0.14 - 3.1.11.
apc.coredump_unmap "0" PHP_INI_SYSTEM K dispozici s APC 3.0.16.
apc.stat_ctime "0" PHP_INI_SYSTEM K dispozici s APC 3.0.13.
apc.preload_path NULA PHP_INI_SYSTEM K dispozici s APC 3.1.1.
apc.file_md5 "0" PHP_INI_SYSTEM K dispozici s APC 3.1.1.
apc.canonicalize "1" PHP_INI_SYSTEM K dispozici s APC 3.1.1.
apc.lazy_functions 0 PHP_INI_SYSTEM K dispozici s APC 3.1.3.
apc.lazy_classes 0 PHP_INI_SYSTEM K dispozici s APC 3.1.3.
Podrobný popis konstant PHP_INI_* naleznete v části Kde lze nastavit možnosti konfigurace.

Stručné vysvětlení konfiguračních direktiv.

Pokud nainstalujete apc.povoleno nastavena na 0, APC nebude povoleno. To je užitečné, když je APC v PHP staticky povoleno a neexistují žádné jiné možnosti, jak jeho použití zakázat. Pokud je APC postaveno jako DSO, můžete řádek jednoduše okomentovat rozšíření PROTI php.ini.

Apc.shm_segments celé číslo

Počet segmentů sdílené paměti přidělených pro mezipaměť. Pokud společnost APC využila veškerou dostupnou sdílenou paměť a apc.shm_size tak velký, jak to systém umožňuje, může pomoci zvýšení tohoto parametru.

Apc.shm_size tětiva

Velikost segmentu sdílené paměti, specifikovaná ve zkratce (viz tento FAQ). Ve výchozím nastavení některé systémy (včetně většiny variant BSD) omezují tuto hodnotu na extrémně nízkou hodnotu.

Apc.shm_strings_buffer tětiva

Množství paměti přidělené sdílené mezipaměti řetězců používané interními procesy APC. Velikost musí být ukončena příponou M nebo G pro označení megabajtů a gigabajtů. Použití této možnosti může snížit paměťovou stopu pracovních procesů PHP-FPM, protože stejné řetězce budou uloženy v paměti pouze jednou a mohou být použity všemi pracovními procesy.

Apc.optimalizace celé číslo

Úroveň optimalizace. Nula zakáže optimalizaci. Čím vyšší je tato hodnota, tím agresivnější optimalizace bude použita. Velký nárůst rychlosti nečekejte. Toto je experimentální funkce.

Apc.num_files_hint celé číslo

Nápověda k počtu jedinečných souborů použitých na vašem webu. Nastavte ji na nulu nebo ji nezadávejte vůbec, pokud si nejste jisti. Toto nastavení je užitečné, když máte mnoho tisíc souborů.

Apc.user_entries_hint celé číslo apc.file_update_protection celé číslo

Když se soubor mění za chodu, mělo by k tomu dojít atomickým způsobem. To znamená, že nejprve musí být zapsán do dočasného souboru a poté přesunut ( mv) do své cílové pozice. Mnoho textových editorů cp, dehet a ostatní to nedělají. To může mít za následek požadavek na soubor (a ukládání do mezipaměti) během jeho zapisování. Nastavení apc.file_update_protection nastavuje zpoždění ukládání do mezipaměti pro zcela nové soubory. Výchozí nastavení je 2 sekundy. To znamená, že pokud časové razítko změny souboru ( mtime) říká, že pokud od úpravy souboru uplynuly méně než 2 sekundy, nebude uložen do mezipaměti. Nešťastník, který se pokusí dostat k napůl uloženému souboru, zažije podivné chování, ale alespoň to nebude trvat dlouho. Pokud jsou všechny soubory webového serveru aktualizovány atomicky, pomocí metod, jako je např rsync(který se aktualizuje správně), lze toto chování zakázat nastavením tohoto parametru na nulu. Pokud je systém I/O přetížený, některé aktualizace mohou trvat déle než dvě sekundy a toto nastavení by mělo být odpovídajícím způsobem zvýšeno.

Apc.enable_cli celé číslo

Více pro testování a ladění. Toto nastavení umožňuje APC pro verzi CLI PHP. Při běžné práci nebude spouštění APC, které vytvoří, naplní a zničí mezipaměť pokaždé, když spustíte skript v konzoli, nejlepší nápad. Ale pro účely testování a ladění můžete snadno povolit APC pro CLI.

Apc.max_file_size celé číslo

Neukládá do mezipaměti soubory větší, než je velikost určená tímto nastavením. Výchozí hodnota je 1M.

Apc.stat celé číslo

Při změně tohoto nastavení buďte opatrní. To je ve výchozím nastavení povoleno, což způsobí, že společnost APC kontroluje soubory skriptů při každém požadavku, aby zjistila, zda byly změněny. Pokud byly změněny, budou znovu zkompilovány a znovu uloženy do mezipaměti. Pokud toto nastavení zakážete, pak APC takovou kontrolu neprovede, a pokud byl soubor již uložen do mezipaměti a poté změněn, pak se nová verze do mezipaměti nedostane. Recaching bude vyžadovat restartování webového serveru. Upozorňujeme, že webové servery nakonfigurované pro použití FastCGI nemusí po restartu vymazat mezipaměť. V průmyslových prostředích, kde ke změnám souborů dochází velmi zřídka, může zakázání této možnosti výrazně zlepšit výkon.

U souborů načtených přes zahrnuto/vyžadováno tato možnost funguje skvěle, ale mějte na paměti, že pokud zahrnete soubor do relativní cesty (v Unixu jakoukoli cestu nezačínající na /), APC zkontroluje jedinečnost. Pokud jsou použity absolutní cesty, APC tuto kontrolu přeskočí a jako jedinečný identifikátor souboru použije absolutní cestu.

Apc.write_lock booleovský

Na silně zatížených serverech se při spuštění serveru nebo při úpravě mnoha souborů současně může společnost APC pokusit zkompilovat a uložit stejný soubor vícekrát současně. Uzamčení zápisu zajišťuje, že pouze jeden proces se pokusí zkompilovat a uložit do mezipaměti soubor bez mezipaměti. Jiné procesy, které potřebují tento soubor použít, použijí jeho verzi bez mezipaměti, místo aby čekaly, až se objeví v mezipaměti.

Apc.report_autofilter booleovský

Zaznamenává všechny skripty, které byly vyloučeny z mezipaměti kvůli dřívějším nebo pozdním problémům s propojením.

Apc.serializer tětiva

Říká společnosti APC, aby použila serializátor třetí strany.

Apc.include_once_override booleovský

Optimalizuje hovory zahrnout_jednou A vyžadovat_jednou abyste zabránili drahým systémovým voláním.

Pozornost

Tato funkce je EXPERIMENTÁLNÍ. Chování této směrnice, její název a dokumentace se mohou v budoucích verzích APC bez upozornění změnit. Používejte jej na vlastní nebezpečí.

Apc.rfc1867 booleovský

Zachycovač průběhu stahování souboru RFC1867 je v APC k dispozici pouze v případě, že je vytvořen s PHP 5.2.0 nebo vyšším. Pokud je to povoleno, pak jakýkoli soubor nahraný na server obsahující ve formuláři před polem souboru pole s názvem APC_UPLOAD_PROGRESS, donutí APC automaticky vytvořit vlastní záznam mezipaměti, jako je upload_ klíč, Kde klíč je hodnota pole APC_UPLOAD_PROGRESS.

Pamatujte, že skryté pole APC_UPLOAD_PROGRESS musí jít do pole se souborem, jinak bude práce chybná.

Vezměte prosím na vědomí, že sledování stahování souborů není bezpečné pro vlákna, takže pokud během prvního stahování existuje nový soubor se stejným klíčem, sledování prvního souboru bude zastaveno.

Všimněte si, že hodnotit bude k dispozici pouze po dokončení všech aktuálních stahování.

Příklad #1 Příklad použití apc.rfc1867

print_r (apc_fetch ( "upload_ $_POST [ APC_UPLOAD_PROGRESS ] " ));
?>

Výsledek spuštění tohoto příkladu bude něco takového:

Pole ( => 1142543 => 1142543 => 1828068,8 => test => soubor => /tmp/php8F => 0 => 1)

Apc.rfc1867_prefix tětiva

Předpona klíče k použití v záznamu uživatelské mezipaměti vytvořeného funkcí sledování průběhu stahování rfc1867.

Apc.rfc1867_name tětiva

Určuje název pro skryté pole formuláře, které umožní proces stahování APC a určí příponu klíče mezipaměti uživatele.

Apc.rfc1867_freq tětiva

Frekvence, s jakou bude položka mezipaměti uživatele aktualizována během stahování souboru. Lze ji zadat buď v procentech, nebo uvedením velikosti v bajtech. V případě potřeby můžete použít přípony "k", "m" A "G"(nerozlišují se malá a velká písmena) pro kilobajty, megabajty a gigabajty. Pokud zadáte nulu, aktualizace proběhnou co nejrychleji, ale to může zpomalit načítání.

Apc.rfc1867_ttl celé číslo

TTL pro záznamy rfc1867.

Apc.localcache booleovský

Umožňuje neblokování stínových mezipamětí místních procesů, což snižuje množství blokování během zápisů do mezipaměti.

Apc.localcache.size celé číslo

Velikost místní mezipaměti stínu procesů by měla být poměrně velká, přibližně polovina apc.num_files_hint .

Apc.coredump_unmap booleovský

Umožňuje APC zachycovat signály, jako je SIGSEGV, který při vydání zapisuje Coredump. Když jsou tyto signály přijaty, APC se pokusí uvolnit veškerou sdílenou paměť, aby ji nezahrnula do Coredump. Toto nastavení může zvýšit stabilitu systému, když byl přijat kritický signál a APC je nakonfigurováno pro použití velkého množství paměti.

Pozornost

Tato funkce je potenciálně nebezpečná. Uvolnění segmentů sdílené paměti při přijetí kritického signálu může vést k nepředvídatelnému chování.

Komentář:

Ačkoli některá jádra poskytují možnost ignorovat některé segmenty sdílené paměti při zápisu souboru jádra, tyto implementace mohou také ignorovat důležité segmenty paměti, jako je tabulka výsledků Apache.

apc.stat_ctime celé číslo

Zkontrolujte pomocí ctime, abyste se vyhnuli problémům způsobeným programy jako svn nebo rsync a ujistěte se, že se inode nezměnil od posledního shromažďování statistik. APC obvykle kontroluje pouze mtime.

Apc.canonicalize bool

Pokud je zakázáno, relativní cesty jsou převedeny na kanonické v režimu bez statistik. Pokud je tato možnost povolena, soubory připojené prostřednictvím obálky datového proudu nebudou ukládány do mezipaměti, protože realpath() nepodporuje obálky proudu.

Apc.preload_path tětiva

Volitelný. Určuje cestu, kterou APC používá k načítání dat uložených v mezipaměti během spouštění.

Apc.use_request_time bool

Použijte čas zahájení požadavku SAPI pro TTL.

Apc.file_md5 bool

Napište md5 hash souborů.

Apc.lazy_functions celé číslo

Umožňuje líné načítání funkcí.

Apc.lazy_classes celé číslo

Umožňuje líné načítání tříd.

před 10ti lety

Výše uvedený ukázkový kód apc.rfc1867 je trochu rychlý a uvolněný pro ty, kteří běží v prostředích, kde APC RFC1867 může nebo nemusí být k dispozici. Tohle je trochu výraznější:

// pokud máme PHP a APC
$havePHP = (1 === porovnání_verzí (PHP_VERSION, "5.2.0" ) ? true : false );
$haveAPC = (extension_loaded ("apc" ) && 1 === version_compare (phpversion ( "apc" ), "3.0.13" ? true : false );
if ($havePHP && $haveAPC ) (
// pokud je povoleno sledování APC a nahrávání
if (ini_get ("apc.enabled" ) && ini_get ("apc.rfc1867" )) (
// získat statistiky
$key = ini_get ("apc.rfc1867_prefix" ) . $_REQUEST["apcid"];
$stats = apc_fetch($key);
}
}