APC UPS-ի սկզբնական կարգավորումը Linux-ում թեյնիկի տեսանկյունից: APC php հավելվածի արագացուցիչի տեղադրում OS X Mountain Lion-ի հիմնական APCu կազմաձևման ատրիբուտների նկարագրություն

Այս գործառույթների վարքագիծը կախված է php.ini-ի կարգավորումներից:

Թեև APC-ի լռելյայն կարգավորումները հարմար են տեղակայումների մեծ մասի համար, որոշ հավելվածներ կարող են պահանջել ավելի ճշգրիտ կարգավորումներ:

APC-ն կարգավորելիս պետք է ուշադրություն դարձնել երկու հիմնական կետի: Առաջինն այն է, թե որքան հիշողություն պետք է հասանելի դարձնի APC-ին, և երկրորդը՝ արդյոք APC-ն կստուգի, արդյոք ֆայլը փոփոխվել է յուրաքանչյուր հարցման դեպքում: Այս պարամետրերը վերահսկվում են պարամետրերով apc.shm_size Եվ apc.stat

, համապատասխանաբար։ Խնդրում ենք ուշադիր կարդալ այս պարամետրերը սահմանելու հետ կապված բաժինները: Երբ սերվերը գործարկվի, սցենարը apc.php Այս ընդլայնմամբ տրված , պետք է պատճենվի «docroot»-ում, և դրա իրավունքները պետք է թույլ տան, որ այն գործարկվի բրաուզերի միջոցով: Այս սցենարը մանրամասն տեղեկություններ է տալիս այն մասին, թե ինչպես է աշխատում APC-ն: Եթե ​​PHP-ում GD-ն միացված է, ապա այս սկրիպտը ցույց կտա նաև օգտակար գրաֆիկներ։ Իհարկե, առաջինը, որ հետաքրքիր կլինի, այն է, թե արդյոք APC-ն ինչ-որ բան պահում է: Եթե ​​APC-ն աշխատում է, ապա արժեքըՔեշի ամբողջական հաշվարկ (ձախում) ցույց կտա, թե քանի անգամ է քեշն ամբողջությամբ լցվել և ստիպված է եղել հարկադրաբար հեռացնել այն գրառումները, որոնց վերջին անգամ մուտք չի գործել apc.ttl վայրկյան Որքան ցածր է այս թիվը, այնքան ավելի լավ է կազմաձևված քեշը:Եթե ​​այս թիվը անընդհատ աճում է, ապա APC-ն ստիպված է անընդհատ մաքրել հին գրառումները, և քեշավորման ամբողջ իմաստը կորչում է: Այս թիվը նվազեցնելու լավագույն միջոցը APC-ին հիշողություն ավելացնելն է: Եթե ​​դա հնարավոր չէ անել, ապա դուք պետք է վերակազմավորեք

apc.ֆիլտրեր սահմանափակել քեշավորված սկրիպտների շարքը:Եթե ​​APC-ն կառուցված է mmap (Հիշողության քարտեզագրում) աջակցությամբ, այն կօգտագործի միայն մեկ հիշողության հատված, եթե, ընդհակառակը, APC-ն կառուցված է SHM (SysV Shared Memory) աջակցությամբ, այն կօգտագործի մի քանի հատված: MMAP-ը չունի առավելագույն սահման, ի տարբերություն SHM-ի, որը սահմանափակ է

/proc/sys/kernel/shmmax
. Ընդհանուր առմամբ խորհուրդ է տրվում օգտագործել MMAP, քանի որ այն շատ ավելի արագ է հատկացնում հիշողությունը, երբ վեբ սերվերը վերագործարկվում է, ինչը ազդում է սերվերի գործարկման արագության վրա: APC-ի կազմաձևման պարամետրեր Անուն Կանխադրված
Փոփոխության գտնվելու վայրը "1" Փոփոխությունների ցանկ apc.enabled<= 3.0.12.
apc.shm_segments "1" Փոփոխությունների ցանկ
Այս պարամետրերը վերահսկվում են պարամետրերով «32M» Փոփոխությունների ցանկ
apc.shm_strings_buffer «4M» Փոփոխությունների ցանկ Հասանելի է APC 3.1.4-ով:
apc.optimization "0" PHP_INI_ALL PHP_INI_SYSTEM-ը APC 2-ում: Հեռացված է APC 3.0.13-ում:
apc.num_files_hint "1000" Փոփոխությունների ցանկ
apc.user_entries_hint "4096" Փոփոխությունների ցանկ Հասանելի է APC 3.0.0-ով:
(ձախում) ցույց կտա, թե քանի անգամ է քեշն ամբողջությամբ լցվել և ստիպված է եղել հարկադրաբար հեռացնել այն գրառումները, որոնց վերջին անգամ մուտք չի գործել "0" Փոփոխությունների ցանկ Հասանելի է APC 3.0.0-ով:
apc.user_ttl "0" Փոփոխությունների ցանկ Հասանելի է APC 3.0.0-ով:
apc.gc_ttl "3600" Փոփոխությունների ցանկ
apc.cache_by_default "1" PHP_INI_ALL PHP_INI_SYSTEM APC-ում<= 3.0.12. Доступно с APC 3.0.0.
վայրկյան Որքան ցածր է այս թիվը, այնքան ավելի լավ է կազմաձևված քեշը: NULL Փոփոխությունների ցանկ
apc.mmap_file_mask NULL Փոփոխությունների ցանկ
apc.slam_defense "1" Փոփոխությունների ցանկ Հասանելի է APC 3.0.0-ով: Նախքան APC 3.1.4, լռելյայն արժեք "0" (հաշմանդամ):
apc.file_update_protection "2" Փոփոխությունների ցանկ Հասանելի է APC 3.0.6-ով:
apc.enable_cli "0" Փոփոխությունների ցանկ Հասանելի է APC 3.0.7-ով:
apc.max_file_size «1 մ» Փոփոխությունների ցանկ Հասանելի է APC 3.0.7-ով:
apc.use_request_time "1" PHP_INI_ALL Հասանելի է APC 3.1.3-ով:
Եվ "1" Փոփոխությունների ցանկ Հասանելի է APC 3.0.10-ով:
apc.write_lock "1" Փոփոխությունների ցանկ Հասանելի է APC 3.0.11-ով:
apc.report_autofilter "0" Փոփոխությունների ցանկ Հասանելի է APC 3.0.11-ով:
apc.serializer «կանխադրված» Փոփոխությունների ցանկ Հասանելի է APC 3.1.0-ով:
apc.include_once_override "0" Փոփոխությունների ցանկ Հասանելի է APC 3.0.12-ով:
apc.rfc1867 "0" Փոփոխությունների ցանկ Հասանելի է APC 3.0.13-ով:
apc.rfc1867_prefix «վերբեռնել_» Փոփոխությունների ցանկ
apc.rfc1867_name «APC_UPLOAD_PROGRESS» Փոփոխությունների ցանկ
apc.rfc1867_freq "0" Փոփոխությունների ցանկ
apc.rfc1867_ttl "3600" Փոփոխությունների ցանկ Հասանելի է APC 3.1.1-ով:
apc.localcache "0" Փոփոխությունների ցանկ
apc.localcache.size "512" Փոփոխությունների ցանկ Հասանելի է APC 3.0.14 - 3.1.11:
apc.coredump_unmap "0" Փոփոխությունների ցանկ Հասանելի է APC 3.0.16-ով:
apc.stat_ctime "0" Փոփոխությունների ցանկ Հասանելի է APC 3.0.13-ով:
apc.preload_path NULL Փոփոխությունների ցանկ Հասանելի է APC 3.1.1-ով:
apc.file_md5 "0" Փոփոխությունների ցանկ Հասանելի է APC 3.1.1-ով:
apc.canonicalize "1" Փոփոխությունների ցանկ Հասանելի է APC 3.1.1-ով:
apc.lazy_functions 0 Փոփոխությունների ցանկ Հասանելի է APC 3.1.3-ով:
apc.lazy_classes 0 Փոփոխությունների ցանկ Հասանելի է APC 3.1.3-ով:
PHP_INI_* հաստատունների մանրամասն նկարագրության համար տես բաժինը, որտեղ կարող են սահմանվել կազմաձևման ընտրանքները:

Կազմաձևման հրահանգների համառոտ բացատրություն:

Եթե ​​տեղադրեք Փոփոխության գտնվելու վայրըսահմանվել է 0, APC-ն միացված չի լինի: Սա օգտակար է, երբ APC-ն ստատիկորեն միացված է PHP-ում, և դրա օգտագործումն անջատելու այլ տարբերակներ չկան: Եթե ​​APC-ն կառուցված է որպես DSO, կարող եք պարզապես մեկնաբանել գիծըերկարաձգում Վ.

php.ini Apc.shm_segments

ամբողջ թիվ Այս պարամետրերը վերահսկվում են պարամետրերովՔեշի համար հատկացված ընդհանուր հիշողության հատվածների քանակը:

Եթե ​​APC-ն օգտագործել է ողջ հասանելի ընդհանուր հիշողությունը և որքան թույլ է տալիս համակարգը, այս պարամետրի ավելացումը կարող է օգնել:

Apc.shm_size

լար որքան թույլ է տալիս համակարգը, այս պարամետրի ավելացումը կարող է օգնել:

Համատեղ հիշողության հատվածի չափը, որը նշված է կարճ նշումով (տե՛ս այս ՀՏՀ):

Լռելյայնորեն, որոշ համակարգեր (ներառյալ BSD տարբերակների մեծ մասը) սահմանափակում են այս արժեքը չափազանց փոքր արժեքով: Apc.shm_segments

Օպտիմալացման մակարդակ: Zero-ն անջատում է օպտիմալացումը:

Որքան բարձր լինի այս արժեքը, այնքան ավելի ագրեսիվ օպտիմալացում կկիրառվի: Արագության մեծ աճ մի սպասեք։ Սա փորձարարական ֆունկցիոնալություն է: Apc.shm_segments

Apc.num_files_hint

Հուշում ձեր կայքում օգտագործվող եզակի ֆայլերի քանակի մասին: Սահմանեք այն զրոյի կամ ընդհանրապես մի նշեք այն, եթե վստահ չեք: Apc.shm_segmentsԱյս պարամետրը օգտակար է, երբ դուք ունեք հազարավոր ֆայլեր: Apc.shm_segments

Apc.user_entries_hint apc.file_update_protectionԵրբ ֆայլը անմիջապես փոխվում է, դա պետք է տեղի ունենա ատոմային ձևով: Այսինքն, նախ այն պետք է գրվի ժամանակավոր ֆայլ, այնուհետև տեղափոխվի ( մվ, ) իր թիրախային դիրքին:Շատ տեքստային խմբագիրներ apc.file_update_protection cp կուպրիսկ մյուսները դա չեն անում: Դա կարող է հանգեցնել նրան, որ ֆայլը պահանջվի (և պահվի քեշում) մինչ այն գրվում է: Կարգավորումներ սահմանում է քեշավորման հետաձգումը բոլորովին նոր ֆայլերի համար: Կանխադրվածը 2 վայրկյան է: Սա նշանակում է, որ եթե ֆայլի փոփոխման ժամանակացույցը ( mtime

) ասում է, որ եթե ֆայլի փոփոխումից 2 վայրկյանից պակաս է անցել, այն չի պահվի քեշում։ Apc.shm_segments

Դժբախտ մարդը, ով փորձում է մուտք գործել կիսապահպանված ֆայլ, տարօրինակ պահվածք կունենա, բայց գոնե երկար չի տևի:

Եթե ​​բոլոր վեբ սերվերի ֆայլերը թարմացվում են ատոմային եղանակով, օգտագործելով այնպիսի մեթոդներ, ինչպիսիք են Apc.shm_segments

rsync

(որը ճիշտ է թարմացվում), ապա այս վարքագիծը կարող է անջատվել՝ այս պարամետրը դնելով զրոյի: Apc.shm_segments

Զգույշ եղեք այս պարամետրը փոխելիս: Սա լռելյայն միացված է, ինչի հետևանքով APC-ն ստուգում է սցենարի ֆայլերը յուրաքանչյուր հարցում՝ տեսնելու, թե արդյոք դրանք փոփոխված են: Եթե ​​դրանք փոխվել են, դրանք նորից կկազմակերպվեն և նորից կքեշվեն: Եթե ​​անջատեք այս պարամետրը, ապա APC-ն նման ստուգում չի կատարի, իսկ եթե ֆայլն արդեն պահված է և այնուհետև փոխվել է, ապա նոր տարբերակը քեշ չի մտնի: Recaching-ը կպահանջի վերագործարկել վեբ սերվերը:

Խնդրում ենք նկատի ունենալ, որ FastCGI-ն օգտագործելու համար կազմաձևված վեբ սերվերները կարող են չմաքրել քեշը վերագործարկման ժամանակ: Արդյունաբերական միջավայրերում, որտեղ ֆայլերի փոփոխությունները շատ հազվադեպ են տեղի ունենում, այս տարբերակն անջատելը կարող է զգալիորեն բարելավել աշխատանքը:

Ներառված/պահանջվող միջոցով բեռնված ֆայլերի համար այս տարբերակը հիանալի է աշխատում, բայց հիշեք, որ եթե ֆայլը ներառեք հարաբերական ճանապարհով (Unix-ում սա ցանկացած ճանապարհ է, որը չի սկսվում /-ով), APC-ն կստուգի եզակիությունը: Եթե ​​բացարձակ ուղիներ են օգտագործվում, APC-ն բաց կթողնի այս ստուգումը և կօգտագործի բացարձակ ուղին որպես ֆայլի եզակի նույնացուցիչ: Apc.write_lock

բուլյան

Խիստ բեռնված սերվերների վրա, երբ սերվերը գործարկվում է, կամ երբ բազմաթիվ ֆայլեր միաժամանակ փոփոխվում են, APC-ն կարող է միաժամանակ մի քանի անգամ փորձել հավաքել և քեշավորել նույն ֆայլը: Գրելու կողպումը երաշխավորում է, որ միայն մեկ գործընթաց կփորձի հավաքել և քեշավորել չքեշավորված ֆայլը: Այլ գործընթացները, որոնք պետք է օգտագործեն այս ֆայլը, կօգտագործեն դրա չքեշավորված տարբերակը՝ սպասելու, որ այն կհայտնվի քեշում: Apc.write_lock

Apc.report_autofilter

Գրանցում է ցանկացած սկրիպտ, որը բացառվել է քեշից վաղ կամ ուշ կապակցման խնդիրների պատճառով: որքան թույլ է տալիս համակարգը, այս պարամետրի ավելացումը կարող է օգնել:

Apc.serializer

APC-ին ասում է օգտագործել երրորդ կողմի սերիալիզատոր: Apc.write_lock

Apc.include_once_override Օպտիմիզացնում է զանգերը apc.shm_size ներառել_մեկ անգամպահանջում_մեկ անգամ

թանկարժեք համակարգային զանգերը կանխելու համար:

Ուշադրություն Այս ֆունկցիոնալությունն էՓՈՐՁԱՐԱՐԱԿԱՆ

. Apc.write_lock

Այս հրահանգի վարքագիծը, անունը և փաստաթղթերը կարող են փոխվել առանց ծանուցման APC-ի հետագա տարբերակներում: Օգտագործեք այն ձեր սեփական ռիսկով: Apc.rfc1867 RFC1867 ֆայլերի ներբեռնման առաջընթացի խափանիչը հասանելի է միայն APC-ում, եթե այն կառուցված է PHP 5.2.0 կամ ավելի բարձր տարբերակով: Եթե ​​թույլատրվում է, ապա սերվերում վերբեռնված ցանկացած ֆայլ, որը պարունակում է ձևի մեջ, ֆայլի դաշտից առաջ, անվանմամբ դաշտ APC_UPLOAD_PROGRESS, կստիպի APC-ին ավտոմատ կերպով ստեղծել հատուկ քեշի մուտքագրում, ինչպիսին է upload_ APC_UPLOAD_PROGRESSբանալի Apc.rfc1867.

Հիշեք, որ թաքնված դաշտը Apc.rfc1867պետք է գնա ֆայլով դաշտ, հակառակ դեպքում աշխատանքը սխալ կլինի:

Խնդրում ենք նկատի ունենալ, որ ֆայլերի ներբեռնման հետագծումը շղթայում անվտանգ չէ, ուստի, եթե առաջին ներբեռնման ժամանակ նույն բանալիով նորը հայտնվի, առաջինի հետագծումը կդադարեցվի:

նշեք, որ տոկոսադրույքըհասանելի կլինի միայն այն ժամանակ, երբ բոլոր ընթացիկ ներբեռնումները ավարտվեն:

Օրինակ #1 apc.rfc1867 օգտագործման օրինակ

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

Այս օրինակի գործարկման արդյունքը կլինի այսպիսին.

Զանգված ( => 1142543 => 1142543 => 1828068.8 => փորձարկում => ֆայլ => /tmp/php8F => 0 => 1)

Apc.rfc1867_prefix որքան թույլ է տալիս համակարգը, այս պարամետրի ավելացումը կարող է օգնել:

Հիմնական նախածանց՝ օգտագործողի քեշի մուտքագրում օգտագործելու համար, որը ստեղծվել է rfc1867 ներբեռնման առաջընթացին հետևելու գործառույթով:

Apc.rfc1867_name որքան թույլ է տալիս համակարգը, այս պարամետրի ավելացումը կարող է օգնել:

Նշում է թաքնված ձևի դաշտի անուն, որը հնարավորություն կտա APC-ի ներբեռնման գործընթացը և նշելու օգտագործողի քեշի բանալու վերջածանցը:

Apc.rfc1867_freq որքան թույլ է տալիս համակարգը, այս պարամետրի ավելացումը կարող է օգնել:

Հաճախականությունը, որով օգտատիրոջ քեշի մուտքը կթարմացվի ֆայլի ներբեռնման ընթացքում: Այն կարող է նշվել կա՛մ որպես տոկոս, կա՛մ չափը բայթերով նշելով: Ցանկության դեպքում կարող եք օգտագործել վերջածանցներ «կ», «մ»Եվ «գ»(տառերի նկատմամբ զգայուն չէ) համապատասխանաբար կիլոբայթի, մեգաբայթի և գիգաբայթի համար: Եթե ​​նշեք զրո, թարմացումները տեղի կունենան հնարավորինս արագ, բայց դա կարող է դանդաղեցնել բեռնման ժամանակը:

Apc.rfc1867_ttl Apc.shm_segments

TTL rfc1867 գրառումների համար:

Apc.localcache Apc.write_lock

Թույլ է տալիս չարգելափակել տեղային գործընթացների ստվերային քեշերը, ինչը նվազեցնում է քեշում գրելու ընթացքում արգելափակման քանակը:

Apc.localcache.size Apc.shm_segments

Տեղական գործընթացի ստվերային քեշի չափը պետք է լինի բավականին մեծ՝ apc.num_files_hint-ի մոտ կեսը:

Apc.coredump_unmap Apc.write_lock

Թույլ է տալիս APC-ին ընդհատել այնպիսի ազդանշաններ, ինչպիսին է SIGSEGV-ը, որը թողարկվելիս գրում է coredump: Երբ այս ազդանշանները ստացվեն, APC-ն կփորձի ազատել ողջ ընդհանուր հիշողությունը, որպեսզի այն չներառի coredump-ում: Այս պարամետրը կարող է բարձրացնել համակարգի կայունությունը, երբ ստացվել է կրիտիկական ազդանշան և APC-ն կազմաձևված է մեծ քանակությամբ հիշողություն օգտագործելու համար:

թանկարժեք համակարգային զանգերը կանխելու համար:

Այս հատկությունը պոտենցիալ վտանգավոր է: Հիշողության ընդհանուր հատվածների ազատումը, երբ ստացվում է կրիտիկական ազդանշան, կարող է հանգեցնել անկանխատեսելի վարքագծի:

Մեկնաբանություն:

Չնայած որոշ միջուկներ հնարավորություն են տալիս անտեսելու ընդհանուր հիշողության որոշ հատվածներ հիմնական ֆայլ գրելիս, այս իրականացումները կարող են նաև անտեսել հիշողության կարևոր հատվածները, ինչպիսին է Apache-ի ցուցատախտակը:

apc.stat_ctime Apc.shm_segments

Ստուգեք ըստ ctime-ի, որպեսզի խուսափեք այնպիսի ծրագրերի հետ կապված խնդիրներից, ինչպիսիք են svn-ը կամ rsync-ը, համոզվելով, որ inode-ը չի փոխվել վիճակագրության վերջին անգամից ի վեր: Սովորաբար APC-ն ստուգում է միայն mtime-ը:

Apc.canonicalize բուլ

Եթե ​​անջատված է, հարաբերական ուղիները փոխակերպվում են կանոնականի առանց վիճակագրության ռեժիմում: Եթե ​​միացված է, ապա հոսքի փաթաթման միջոցով միացված ֆայլերը քեշ չեն պահվի, քանի որ realpath ()

չի աջակցում հոսքի փաթաթաններին: որքան թույլ է տալիս համակարգը, այս պարամետրի ավելացումը կարող է օգնել:

Apc.preload_path

Ընտրովի: Նշում է այն ուղին, որն օգտագործում է APC-ն գործարկման ընթացքում պահված տվյալները բեռնելու համար: բուլ

Apc.use_request_time

Օգտագործեք SAPI հարցման մեկնարկի ժամը TTL-ի համար: բուլ

Apc.file_md5

Գրեք md5 ֆայլերի հեշեր: Apc.shm_segments

Apc.lazy_functions

Թույլ է տալիս գործառույթների ծույլ բեռնում: Apc.shm_segments

Apc.lazy_classes

Թույլ է տալիս ծույլ բեռնել դասերը:

10 տարի առաջ

Վերևում գտնվող apc.rfc1867 օրինակի կոդը մի փոքր արագ և թույլ է նրանց համար, ովքեր աշխատում են այնպիսի միջավայրերում, որտեղ APC RFC1867-ը կարող է կամ հասանելի չլինել: Սա մի փոքր ավելի արտահայտիչ է.
// եթե մենք ունենք PHP և APC
$havePHP = (1 === version_compare (PHP_VERSION, «5.2.0» ) ? true : false );
$haveAPC = (extension_loaded ("apc") && 1 === version_compare (phpversion ("apc"), "3.0.13") ? true : false );
եթե ($havePHP && $haveAPC) (
// եթե APC-ի և վերբեռնման հետագծումը միացված է
if (ini_get ("apc.enabled") && ini_get ("apc.rfc1867")) (
// Ստացեք վիճակագրություն
$key = ini_get ("apc.rfc1867_prefix"): $_REQUEST["apcid"];
}
}

$stats = apc_fetch ($ key);Ապրիլի 9, 2015 12:12 pm | 1889 դիտում

Մեկնաբանություններ չկան

Ի՞նչ է APC-ն:

APC-ն PHP կոդերի քեշավորման համակարգ է, որը թույլ է տալիս արագացնել ձեր կայքը: PHP-ն դինամիկ սերվերի կողմից սկրիպտային լեզու է, որը պետք է վերլուծվի, կազմվի և կատարվի սերվերում ամեն անգամ, երբ էջը պահանջվում է: Այնուամենայնիվ, շատ դեպքերում հարցումները կրկնվում են, և, հետևաբար, ամպային սերվերը պետք է վերամշակի դրանցից յուրաքանչյուրը:

Այս դեպքում օգնության է հասնում APC-ն կամ այլընտրանքային PHP Cache-ը: Այս գործիքը պահում է PHP կոդը գործող հիշողության մեջ և անհրաժեշտության դեպքում առբերում այն: Ըստ էության, այն շրջանցում է կոդի մշակումն ու կոմպիլյացիան՝ նվազագույնի հասցնելով սերվերի բեռը։

Այս ուղեցույցը ցույց կտա APC-ի տեղադրումն ու կազմաձևումը:Նշում

Ուղեցույցը լրացնելու համար նախ պետք է ունենաք արմատային արտոնություններ, ինչպես նաև .

APC-ի տեղադրում

Նախքան APC քեշը տեղադրելը, դուք պետք է տեղադրեք դրա որոշ կախվածություններ: Դա անելու համար օգտագործեք հետևյալ հրամանը.

sudo apt-get տեղադրել php-pear php5-dev կատարել libpcre3-dev

sudo pecl տեղադրել apc

Տեղադրումն ավարտելու համար անհրաժեշտ է խմբագրել php.ini ֆայլը.

վերջում ավելացնելով հետևյալ տողը.

extension=apc.so

Պահպանեք և փակեք ֆայլը, այնուհետև վերագործարկեք Apache-ն.

sudo ծառայության apache2 վերագործարկումը

Պարզելու համար, թե արդյոք APC-ն միացված է, բացեք PHP տեղեկատվական էջը: Եթե ​​չկա, ստեղծեք դատարկ php ֆայլ /var/www թղթապանակում.

նանո /var/www/info.php

Եվ դրա մեջ ավելացրեք այս կոդը.

phpinfo ();
?>

Պահպանեք և փակեք ֆայլը, այնուհետև բացեք ձեր զննարկիչը: PHP-ի ընթացիկ տեղադրման մասին բոլոր տեղեկությունները կհայտնվեն էկրանին: Եթե ​​APC-ն միացված է, էջը ցույց կտա դա: Ընդհանուր առմամբ, խորհուրդ չի տրվում լքել այս ֆայլը, քանի որ այն կարող է մուտք գործել զգայուն տվյալներ չարտոնված օգտատերերին: Ստուգելուց հետո հեռացրեք այն:

APC-ի կարգավորում

Տեղադրվելուց հետո APC քեշը սկսվում է լռելյայն կարգավորումներով: Նրա կոնֆիգուրացիաներում կան երկու շատ կարևոր պարամետրեր. Այսպիսով, բացեք php.ini ֆայլը.

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

Նախկինում ավելացված տողի տակ, որը ներառում է APC, ավելացրեք հետևյալ տողը.

apc.shm_size = 64

Սա կհատկացնի 64 ՄԲ RAM APC քեշավորման համար: Կախված վիրտուալ մասնավոր սերվերի պահանջներից կամ սահմանափակումներից, այս արժեքը կարող է տարբեր լինել:

Ստորև դուք պետք է ավելացնեք ևս մեկ տող.

apc.stat կարգավորումը ստուգում է սկրիպտը յուրաքանչյուր հարցում՝ փոփոխությունները ստուգելու համար: Եթե ​​այն փոխվել է, այն նորից կկազմակերպի և կքեշի նոր տարբերակը: Սա ստանդարտ APC վարքագիծ է: Այս տողում 0 արժեքը կհուշի APC-ին չստուգել սցենարը փոփոխությունների համար: Սա բարելավում է կատարումը, բայց կա մի բացասական կողմ. եթե PHP սկրիպտում փոփոխություններ լինեն, դրանք չեն արվի մինչև ամպային սերվերը չվերագործարկվի: Հետևաբար, արժեքը 0-ի սահմանելը խորհուրդ է տրվում միայն արտադրության մեջ գտնվող կայքերում:

Այժմ, երբ APC քեշը տեղադրված է և աշխատում է, կարող եք ստուգել դրա կարգավիճակը և կատարումը: Գտեք apc.php ֆայլը /usr/share/php/ պանակում և տեղափոխեք այն բրաուզերի կողմից հասանելի թղթապանակ, օրինակ՝ www.

APC-ի հապավումն է Այլընտրանքային PHP քեշավորում. Ռուսերեն տեքստը այլընտրանքային PHP cacher է: Ինչի՞ համար է այն օգտագործվում: Ինչպես մյուս հայտնի քեշերը, ինչպիսիք են XCache-ը և eAccelerator-ը, այն օգտագործվում է PHP սկրիպտների արագությունը մեծացնելու համար: Եթե ​​դուք ունեք ձեր սեփական սերվերը և մտահոգված եք PHP սկրիպտների կատարմամբ, ապա APC-ն կարող է լինել ձեր խնդրի լուծումը: Այսօրվա հոդվածում մենք ավելին կիմանանք APC-ի մասին, կսովորենք, թե ինչպես տեղադրել և փորձարկել այն, ինչպես նաև օգտագործել APC քեշավորումը PHP սկրիպտներ գրելիս:

Այսօր մենք կիմանանք

Ի՞նչ է APC արագացուցիչը:

ԱրագացուցիչAPC(Այլընտրանքային PHP Cache) PHP-ի համար անվճար և բաց օպոդային քեշեր է: Այն նախագծված էր որպես ազատ, բաց և կայուն շրջանակ՝ քեշավորման և PHP-ի սկզբնական կոդը օպտիմիզացնելու համար: APC-ն իր զարգացման փուլում է։ Ներկայումս աջակցում է PHP 4 և PHP 5, ներառյալ 5.3-ը: Ենթադրաբար այն կներառվի ստանդարտ PHP հիմնական տարբերակ 6-ում։

Ինչպե՞ս է ձեռք բերվում աշխատանքի արագությունը:PHP?

Երբ ձեր կայքի բեռնումը ուշանում է, հարց է առաջանում՝ ինչո՞ւ: Փաստն այն է, որ PHP սկրիպտին ստանդարտ զանգ կատարելիս այն ամեն անգամ նորովի է կազմվում։ Այսինքն՝ նույն աշխատանքը կատարվում է մի քանի անգամ։ Եթե ​​դա փոքր նախագիծ է, ապա դանդաղումները կարող են լինել աննշան, նույնիսկ անտեսանելի: Բայց եթե դուք ունեք մեծ նախագիծ (կայք), ապա նկատել եք, որ երբ մուտք եք գործում, էջը բեռնելու ուշացում կա, չնայած այն հանգամանքին, որ կայքը լավ օպտիմիզացված է և . Պարզության համար եկեք տեսնենք, թե ինչպես է ստանդարտ հարցումը կատարվում առանց PHP արագացուցիչներ օգտագործելու.

Միաժամանակ մահապատիժները շարունակվում են կոդերի հավաքումյուրաքանչյուր խնդրանքով. Սա շատ ժամանակ է պահանջում հարցումը մշակելու համար, և հետևաբար դանդաղում է: Սա շրջանցելու համար հայտնագործվեցին արագացուցիչներ, որոնց ներկայացուցիչն է APC-ն։ Նրանք հավաքված կոդը պահում են սկավառակի վրա, և երբ մուտք են գործում, այն տալիս է արդյունքը: Սա մեծացնում է PHP-ի արագությունը: APC-ն կարող է գործել երկու ռեժիմով, որոնք կազմաձևված են ֆայլում /etc/php.d/apc.ini, փոփոխական Եվ. Փոփոխականը կարող է վերցնել 1 և 0 արժեքները (apc.stat=0 կամ apc.stat=1): apc.stat=1 ռեժիմն օգտագործելիս սկրիպտները փոքր-ինչ ավելի դանդաղ են աշխատում, քանի որ ստուգում են ֆայլի փոփոխության համար, բայց դա խուսափում է խնդիրներից, երբ կոդը փոխվում է, բայց արդյունքի արդյունքը մնում է նույնը: Ուստի խորհուրդ եմ տալիս փոփոխականի արժեքը սահմանել 1:

APC արագացուցիչը տեղադրելուց հետո հարցումների կատարման սխեման կլինի հետևյալը.

Ուղեցույցը լրացնելու համար նախ պետք է ունենաք արմատային արտոնություններ, ինչպես նաև .

APC-ն շատ հեշտ է տեղադրել: Այն կարող է տեղադրվել ինչպես Debian/Ubuntu-ի, այնպես էլ այլ բաշխումների վրա:

APC-ի տեղադրում CentOS, RHEL, Fedora-ում.

Մենք կտեղադրենք PECL-ի միջոցով: Նախ միացնում ենք .repo-ն, որը պարունակում է ընթացիկ APC-ն: Տես ստորև բերված օրինակը.

wget http://rpm.scwlab.com/el/php/yum.conf -O /etc/yum.repos.d/stalwart.repo

yum տեղադրել php-pecl-apc

Այժմ փոխեք /etc/php.d/apc.ini ֆայլի կարգավորումները ձեր ճաշակով և վերագործարկեք սերվերը:

APC-ի տեղադրում Debian-ում, Ubuntu-ում

apt-get install apache2-threaded-dev php5-dev php5-pear make gcc g++

pecl տեղադրել apc

Ներբեռնելուց հետո բացեք ֆայլը /etc/php5/apache2/php.ini հասցեով, ավելացրեք պարամետրը extension=apc.so, և վերագործարկեք սերվերը:

Ինչպես տեսնում եք, APC-ի տեղադրումը Debian-ում կամ Ubuntu-ում բավականին պարզ է, պարզապես անհրաժեշտ է մուտքագրել հրամանը վահանակում: sudo aptitude տեղադրել php-apc. Դուք կարող եք նաև տեղադրել այս ընդլայնումը միջոցով սինապտիկ. Եթե ​​ունեք այլ բաշխում, կարող եք տեղադրել APC փաթեթը PECL-ից: Դա անելու համար վահանակում գործարկեք հետևյալ հրամանը sudo pecl տեղադրել apc.

Փաթեթի հասանելիության ստուգումAPC

Եթե ​​php.ini կարգավորումների ֆայլում կա փաթեթի ներբեռնման տող extension=apc.so. Կամ PHP ընդլայնումների կազմաձևման պանակում ստեղծվել է apc.ini ֆայլ՝ նույն տողով: Յուրաքանչյուր բաշխում ունի իր հասցեն: Debian-ի համար սա /etc/php5/apache2/conf.d/ է:

Եթե ​​դուք ստուգել եք և վստահ եք, որ ամեն ինչ լավ է, վերագործարկեք սերվերը: Հիմա եկեք ստուգենք APC փաթեթի մասին տեղեկատվությունը: Դա անելու համար գտեք այն թղթապանակը, որտեղ տեղադրվել է ընդլայնումը: Թղթապանակում դուք կգտնեք անունով ֆայլ apc.php. Այս ֆայլը նույնպես առկա է տեղադրման արխիվում: Պատճենեք այն ձեր սերվերի կայքերից ցանկացած գրացուցակում..php: Եթե ​​փաթեթը հաջողությամբ տեղադրվել է, ապա այս ֆայլը ներբեռնելիս կտեսնեք ընթացիկ APC փաթեթի վերաբերյալ տեղեկատվության հետևյալ աղյուսակը:



PHP-ում APC-ի օգտագործումը

PHP կոդ գրելիս APC ընդլայնման օգտագործումը շատ պարզ և հարմար է: Այժմ դուք կարող եք տեսնել սա ինքներդ:

Սկզբից մենք կգրենք դաս՝ APC քեշավորման համակարգի միջոցով հիշողության հետ աշխատելու համար: Ստեղծեք ֆայլ և տեղադրեք կոդը այնտեղ հետևյալ հասցեով.

classes/apc.caching.php

bEnabled = extension_loaded ("apc");

) // ստանալ տվյալներ հիշողության ֆունկցիայից getData($sKey) ( $bRes = կեղծ; $vData = apc_fetch($sKey, $bRes); վերադարձ ($bRes) ? $vData:null; ) // պահպանել տվյալները հիշողության ֆունկցիայի մեջ setData ($sKey, $vData) ( վերադարձ apc_store ($sKey, $vData, $this->iTtl); ) // ջնջել տվյալները հիշողության ֆունկցիայից delData ($sKey) ( $bRes = կեղծ; apc_fetch ($sKey, $ bRes ($bRes) apc_delete($sKey) ) ?>

Դասարանը նկարագրում է, թե ինչ է անում յուրաքանչյուր ֆունկցիա: Հիմա եկեք ստեղծենք թեստային ֆայլ:

«սեղան», «գույն» => «շագանակագույն», «չափ» => զանգված («x» => 200, «y» => 120, «z» => 150,), «ուժ» => 10, ); require_once ("classes/apc.caching.php"); $oCache = նոր CacheAPC(); echo «Տվյալներ.

"; // Տեսնենք, թե ինչ ունենք print_r($aData); echo "
"; if ($oCache->bEnabled) ( // Եթե APC-ն հասանելի է $oCache->setData("my_object", $aData); // Տվյալները պահեք հիշողության մեջ $oCache->setData("our_class_object", $oCache) // Պահպանեք դասի օբյեկտը հիշողության մեջ «Տեսականորեն մենք պահպանեցինք տվյալները հիշողության մեջ, սեղմեք այստեղ՝ ստուգելու համար, թե արդյոք ամեն ինչ իսկապես այնտեղ է։» (echo «APC փաթեթը տեղադրված չէ, այնուհետև փորձարկեք !";) ?>

Այս ֆայլում մենք հիշողության մեջ պահեցինք 2 օբյեկտ՝ զանգված և դասի օբյեկտ: Հիմա եկեք ստեղծենք երկրորդ ֆայլը:

index2.php

bEnabled) ( // Եթե APC-ն հասանելի է $aMemData = $oCache->getData("my_object"); // Ստացեք տվյալներ հիշողությունից $aMemData2 = $oCache->getData("our_class_object"); // ստացեք տվյալներ հիշողությունից, որը դասարանում echo «Տվյալներ հիշողության մեջ.

"; // ստուգեք, թե ինչ ունենք հիշողության մեջ print_r($aMemData); echo "
"; echo "Ինչպես տեսնում եք, բոլոր տվյալները հասանելի են, հիմա եկեք դրանք հանենք հիշողությունից, դրա համար մենք գնում ենք այստեղ..."; ) else ( echo "APC փաթեթը տեղադրված չէ, տեղադրեք այն և փորձարկեք այն !";) ?>

Այս սցենարում մենք միայն հիշողությունից տեղեկատվություն ենք կարդում: Ինչպես տեսնում եք, բոլոր տեղեկությունները հիանալի կերպով կարդացվում են հիշողությունից: Դիտարկենք վերջին օրինակը։

index3.php

bEnabled) ( // Եթե APC-ն հասանելի է $oCache->delData ("my_object"); // Տվյալների առբերում հիշողությունից $oCache->delData("our_class_object"); // Տվյալների առբերում հիշողությունից $aMemData = $oCache-> getData ("my_object");

"; // Ստուգեք, թե ինչ է պահվում հիշողության մեջ print_r($aMemData); echo "
"; echo "Տվյալներ CacheAPC դասի օբյեկտի հիշողությունից.
"; print_r($aMemData2); echo "
"; echo "Ինչպես տեսնում եք, բոլոր տվյալները հանվել են հիշողությունից: Ուռա՛՛; ) else ( echo «APC փաթեթը տեղադրված չէ, տեղադրեք այն և հետո փորձարկեք»: ) ?>

Եզրակացություն

Շնորհակալություն ուշադրության համար։ Հուսով եմ, որ ձեզ դուր եկավ օգտագործման մասին կարդալըAPC-ն էPHP. Եթե ​​դուք ունեք այլ գաղափարներ, թե ինչպես օգտագործելAPC գրելիսPHP սկրիպտներ, գրեք այդ մասին մեկնաբանություններում։

Այս գործառույթների վարքագիծը կախված է php.ini-ի կարգավորումներից:

Թեև APC-ի լռելյայն կարգավորումները հարմար են տեղակայումների մեծ մասի համար, որոշ հավելվածներ կարող են պահանջել ավելի ճշգրիտ կարգավորումներ:

APC-ն կարգավորելիս պետք է ուշադրություն դարձնել երկու հիմնական կետի: Առաջինն այն է, թե որքան հիշողություն պետք է հասանելի դարձնի APC-ին, և երկրորդը՝ արդյոք APC-ն կստուգի, արդյոք ֆայլը փոփոխվել է յուրաքանչյուր հարցման դեպքում: Այս պարամետրերը վերահսկվում են պարամետրերով apc.shm_size Եվ apc.stat

, համապատասխանաբար։ Խնդրում ենք ուշադիր կարդալ այս պարամետրերը սահմանելու հետ կապված բաժինները: Երբ սերվերը գործարկվի, սցենարը apc.php Այս ընդլայնմամբ տրված , պետք է պատճենվի «docroot»-ում, և դրա իրավունքները պետք է թույլ տան, որ այն գործարկվի բրաուզերի միջոցով: Այս սցենարը մանրամասն տեղեկություններ է տալիս այն մասին, թե ինչպես է աշխատում APC-ն: Եթե ​​PHP-ում GD-ն միացված է, ապա այս սկրիպտը ցույց կտա նաև օգտակար գրաֆիկներ։ Իհարկե, առաջինը, որ հետաքրքիր կլինի, այն է, թե արդյոք APC-ն ինչ-որ բան պահում է: Եթե ​​APC-ն աշխատում է, ապա արժեքըՔեշի ամբողջական հաշվարկ (ձախում) ցույց կտա, թե քանի անգամ է քեշն ամբողջությամբ լցվել և ստիպված է եղել հարկադրաբար հեռացնել այն գրառումները, որոնց վերջին անգամ մուտք չի գործել apc.ttl վայրկյան Որքան ցածր է այս թիվը, այնքան ավելի լավ է կազմաձևված քեշը:Եթե ​​այս թիվը անընդհատ աճում է, ապա APC-ն ստիպված է անընդհատ մաքրել հին գրառումները, և քեշավորման ամբողջ իմաստը կորչում է: Այս թիվը նվազեցնելու լավագույն միջոցը APC-ին հիշողություն ավելացնելն է: Եթե ​​դա հնարավոր չէ անել, ապա դուք պետք է վերակազմավորեք

apc.ֆիլտրեր սահմանափակել քեշավորված սկրիպտների շարքը:Եթե ​​APC-ն կառուցված է mmap (Հիշողության քարտեզագրում) աջակցությամբ, այն կօգտագործի միայն մեկ հիշողության հատված, եթե, ընդհակառակը, APC-ն կառուցված է SHM (SysV Shared Memory) աջակցությամբ, այն կօգտագործի մի քանի հատված: MMAP-ը չունի առավելագույն սահման, ի տարբերություն SHM-ի, որը սահմանափակ է

/proc/sys/kernel/shmmax
. Ընդհանուր առմամբ խորհուրդ է տրվում օգտագործել MMAP, քանի որ այն շատ ավելի արագ է հատկացնում հիշողությունը, երբ վեբ սերվերը վերագործարկվում է, ինչը ազդում է սերվերի գործարկման արագության վրա: APC-ի կազմաձևման պարամետրեր Անուն Կանխադրված
Փոփոխության գտնվելու վայրը "1" Փոփոխությունների ցանկ apc.enabled<= 3.0.12.
apc.shm_segments "1" Փոփոխությունների ցանկ
Այս պարամետրերը վերահսկվում են պարամետրերով «32M» Փոփոխությունների ցանկ
apc.shm_strings_buffer «4M» Փոփոխությունների ցանկ Հասանելի է APC 3.1.4-ով:
apc.optimization "0" PHP_INI_ALL PHP_INI_SYSTEM-ը APC 2-ում: Հեռացված է APC 3.0.13-ում:
apc.num_files_hint "1000" Փոփոխությունների ցանկ
apc.user_entries_hint "4096" Փոփոխությունների ցանկ Հասանելի է APC 3.0.0-ով:
(ձախում) ցույց կտա, թե քանի անգամ է քեշն ամբողջությամբ լցվել և ստիպված է եղել հարկադրաբար հեռացնել այն գրառումները, որոնց վերջին անգամ մուտք չի գործել "0" Փոփոխությունների ցանկ Հասանելի է APC 3.0.0-ով:
apc.user_ttl "0" Փոփոխությունների ցանկ Հասանելի է APC 3.0.0-ով:
apc.gc_ttl "3600" Փոփոխությունների ցանկ
apc.cache_by_default "1" PHP_INI_ALL PHP_INI_SYSTEM APC-ում<= 3.0.12. Доступно с APC 3.0.0.
վայրկյան Որքան ցածր է այս թիվը, այնքան ավելի լավ է կազմաձևված քեշը: NULL Փոփոխությունների ցանկ
apc.mmap_file_mask NULL Փոփոխությունների ցանկ
apc.slam_defense "1" Փոփոխությունների ցանկ Հասանելի է APC 3.0.0-ով: Նախքան APC 3.1.4, լռելյայն արժեք "0" (հաշմանդամ):
apc.file_update_protection "2" Փոփոխությունների ցանկ Հասանելի է APC 3.0.6-ով:
apc.enable_cli "0" Փոփոխությունների ցանկ Հասանելի է APC 3.0.7-ով:
apc.max_file_size «1 մ» Փոփոխությունների ցանկ Հասանելի է APC 3.0.7-ով:
apc.use_request_time "1" PHP_INI_ALL Հասանելի է APC 3.1.3-ով:
Եվ "1" Փոփոխությունների ցանկ Հասանելի է APC 3.0.10-ով:
apc.write_lock "1" Փոփոխությունների ցանկ Հասանելի է APC 3.0.11-ով:
apc.report_autofilter "0" Փոփոխությունների ցանկ Հասանելի է APC 3.0.11-ով:
apc.serializer «կանխադրված» Փոփոխությունների ցանկ Հասանելի է APC 3.1.0-ով:
apc.include_once_override "0" Փոփոխությունների ցանկ Հասանելի է APC 3.0.12-ով:
apc.rfc1867 "0" Փոփոխությունների ցանկ Հասանելի է APC 3.0.13-ով:
apc.rfc1867_prefix «վերբեռնել_» Փոփոխությունների ցանկ
apc.rfc1867_name «APC_UPLOAD_PROGRESS» Փոփոխությունների ցանկ
apc.rfc1867_freq "0" Փոփոխությունների ցանկ
apc.rfc1867_ttl "3600" Փոփոխությունների ցանկ Հասանելի է APC 3.1.1-ով:
apc.localcache "0" Փոփոխությունների ցանկ
apc.localcache.size "512" Փոփոխությունների ցանկ Հասանելի է APC 3.0.14 - 3.1.11:
apc.coredump_unmap "0" Փոփոխությունների ցանկ Հասանելի է APC 3.0.16-ով:
apc.stat_ctime "0" Փոփոխությունների ցանկ Հասանելի է APC 3.0.13-ով:
apc.preload_path NULL Փոփոխությունների ցանկ Հասանելի է APC 3.1.1-ով:
apc.file_md5 "0" Փոփոխությունների ցանկ Հասանելի է APC 3.1.1-ով:
apc.canonicalize "1" Փոփոխությունների ցանկ Հասանելի է APC 3.1.1-ով:
apc.lazy_functions 0 Փոփոխությունների ցանկ Հասանելի է APC 3.1.3-ով:
apc.lazy_classes 0 Փոփոխությունների ցանկ Հասանելի է APC 3.1.3-ով:
PHP_INI_* հաստատունների մանրամասն նկարագրության համար տես բաժինը, որտեղ կարող են սահմանվել կազմաձևման ընտրանքները:

Կազմաձևման հրահանգների համառոտ բացատրություն:

Եթե ​​տեղադրեք Փոփոխության գտնվելու վայրըսահմանվել է 0, APC-ն միացված չի լինի: Սա օգտակար է, երբ APC-ն ստատիկորեն միացված է PHP-ում, և դրա օգտագործումն անջատելու այլ տարբերակներ չկան: Եթե ​​APC-ն կառուցված է որպես DSO, կարող եք պարզապես մեկնաբանել գիծըերկարաձգում Վ.

php.ini Apc.shm_segments

ամբողջ թիվ Այս պարամետրերը վերահսկվում են պարամետրերովՔեշի համար հատկացված ընդհանուր հիշողության հատվածների քանակը:

Եթե ​​APC-ն օգտագործել է ողջ հասանելի ընդհանուր հիշողությունը և որքան թույլ է տալիս համակարգը, այս պարամետրի ավելացումը կարող է օգնել:

Apc.shm_size

լար որքան թույլ է տալիս համակարգը, այս պարամետրի ավելացումը կարող է օգնել:

Համատեղ հիշողության հատվածի չափը, որը նշված է կարճ նշումով (տե՛ս այս ՀՏՀ):

Լռելյայնորեն, որոշ համակարգեր (ներառյալ BSD տարբերակների մեծ մասը) սահմանափակում են այս արժեքը չափազանց փոքր արժեքով: Apc.shm_segments

Օպտիմալացման մակարդակ: Zero-ն անջատում է օպտիմալացումը:

Որքան բարձր լինի այս արժեքը, այնքան ավելի ագրեսիվ օպտիմալացում կկիրառվի: Արագության մեծ աճ մի սպասեք։ Սա փորձարարական ֆունկցիոնալություն է: Apc.shm_segments

Apc.num_files_hint

Հուշում ձեր կայքում օգտագործվող եզակի ֆայլերի քանակի մասին: Սահմանեք այն զրոյի կամ ընդհանրապես մի նշեք այն, եթե վստահ չեք: Apc.shm_segmentsԱյս պարամետրը օգտակար է, երբ դուք ունեք հազարավոր ֆայլեր: Apc.shm_segments

Apc.user_entries_hint apc.file_update_protectionԵրբ ֆայլը անմիջապես փոխվում է, դա պետք է տեղի ունենա ատոմային ձևով: Այսինքն, նախ այն պետք է գրվի ժամանակավոր ֆայլ, այնուհետև տեղափոխվի ( մվ, ) իր թիրախային դիրքին:Շատ տեքստային խմբագիրներ apc.file_update_protection cp կուպրիսկ մյուսները դա չեն անում: Դա կարող է հանգեցնել նրան, որ ֆայլը պահանջվի (և պահվի քեշում) մինչ այն գրվում է: Կարգավորումներ սահմանում է քեշավորման հետաձգումը բոլորովին նոր ֆայլերի համար: Կանխադրվածը 2 վայրկյան է: Սա նշանակում է, որ եթե ֆայլի փոփոխման ժամանակացույցը ( mtime

) ասում է, որ եթե ֆայլի փոփոխումից 2 վայրկյանից պակաս է անցել, այն չի պահվի քեշում։ Apc.shm_segments

Դժբախտ մարդը, ով փորձում է մուտք գործել կիսապահպանված ֆայլ, տարօրինակ պահվածք կունենա, բայց գոնե երկար չի տևի:

Եթե ​​բոլոր վեբ սերվերի ֆայլերը թարմացվում են ատոմային եղանակով, օգտագործելով այնպիսի մեթոդներ, ինչպիսիք են Apc.shm_segments

rsync

(որը ճիշտ է թարմացվում), ապա այս վարքագիծը կարող է անջատվել՝ այս պարամետրը դնելով զրոյի: Apc.shm_segments

Զգույշ եղեք այս պարամետրը փոխելիս: Սա լռելյայն միացված է, ինչի հետևանքով APC-ն ստուգում է սցենարի ֆայլերը յուրաքանչյուր հարցում՝ տեսնելու, թե արդյոք դրանք փոփոխված են: Եթե ​​դրանք փոխվել են, դրանք նորից կկազմակերպվեն և նորից կքեշվեն: Եթե ​​անջատեք այս պարամետրը, ապա APC-ն նման ստուգում չի կատարի, իսկ եթե ֆայլն արդեն պահված է և այնուհետև փոխվել է, ապա նոր տարբերակը քեշ չի մտնի: Recaching-ը կպահանջի վերագործարկել վեբ սերվերը:

Խնդրում ենք նկատի ունենալ, որ FastCGI-ն օգտագործելու համար կազմաձևված վեբ սերվերները կարող են չմաքրել քեշը վերագործարկման ժամանակ: Արդյունաբերական միջավայրերում, որտեղ ֆայլերի փոփոխությունները շատ հազվադեպ են տեղի ունենում, այս տարբերակն անջատելը կարող է զգալիորեն բարելավել աշխատանքը:

Ներառված/պահանջվող միջոցով բեռնված ֆայլերի համար այս տարբերակը հիանալի է աշխատում, բայց հիշեք, որ եթե ֆայլը ներառեք հարաբերական ճանապարհով (Unix-ում սա ցանկացած ճանապարհ է, որը չի սկսվում /-ով), APC-ն կստուգի եզակիությունը: Եթե ​​բացարձակ ուղիներ են օգտագործվում, APC-ն բաց կթողնի այս ստուգումը և կօգտագործի բացարձակ ուղին որպես ֆայլի եզակի նույնացուցիչ: Apc.write_lock

բուլյան

Խիստ բեռնված սերվերների վրա, երբ սերվերը գործարկվում է, կամ երբ բազմաթիվ ֆայլեր միաժամանակ փոփոխվում են, APC-ն կարող է միաժամանակ մի քանի անգամ փորձել հավաքել և քեշավորել նույն ֆայլը: Գրելու կողպումը երաշխավորում է, որ միայն մեկ գործընթաց կփորձի հավաքել և քեշավորել չքեշավորված ֆայլը: Այլ գործընթացները, որոնք պետք է օգտագործեն այս ֆայլը, կօգտագործեն դրա չքեշավորված տարբերակը՝ սպասելու, որ այն կհայտնվի քեշում: Apc.write_lock

Apc.report_autofilter

Գրանցում է ցանկացած սկրիպտ, որը բացառվել է քեշից վաղ կամ ուշ կապակցման խնդիրների պատճառով: որքան թույլ է տալիս համակարգը, այս պարամետրի ավելացումը կարող է օգնել:

Apc.serializer

APC-ին ասում է օգտագործել երրորդ կողմի սերիալիզատոր: Apc.write_lock

Apc.include_once_override Օպտիմիզացնում է զանգերը apc.shm_size ներառել_մեկ անգամպահանջում_մեկ անգամ

թանկարժեք համակարգային զանգերը կանխելու համար:

Ուշադրություն Այս ֆունկցիոնալությունն էՓՈՐՁԱՐԱՐԱԿԱՆ

. Apc.write_lock

Այս հրահանգի վարքագիծը, անունը և փաստաթղթերը կարող են փոխվել առանց ծանուցման APC-ի հետագա տարբերակներում: Օգտագործեք այն ձեր սեփական ռիսկով: Apc.rfc1867 RFC1867 ֆայլերի ներբեռնման առաջընթացի խափանիչը հասանելի է միայն APC-ում, եթե այն կառուցված է PHP 5.2.0 կամ ավելի բարձր տարբերակով: Եթե ​​թույլատրվում է, ապա սերվերում վերբեռնված ցանկացած ֆայլ, որը պարունակում է ձևի մեջ, ֆայլի դաշտից առաջ, անվանմամբ դաշտ APC_UPLOAD_PROGRESS, կստիպի APC-ին ավտոմատ կերպով ստեղծել հատուկ քեշի մուտքագրում, ինչպիսին է upload_ APC_UPLOAD_PROGRESSբանալի Apc.rfc1867.

Հիշեք, որ թաքնված դաշտը Apc.rfc1867պետք է գնա ֆայլով դաշտ, հակառակ դեպքում աշխատանքը սխալ կլինի:

Խնդրում ենք նկատի ունենալ, որ ֆայլերի ներբեռնման հետագծումը շղթայում անվտանգ չէ, ուստի, եթե առաջին ներբեռնման ժամանակ նույն բանալիով նորը հայտնվի, առաջինի հետագծումը կդադարեցվի:

նշեք, որ տոկոսադրույքըհասանելի կլինի միայն այն ժամանակ, երբ բոլոր ընթացիկ ներբեռնումները ավարտվեն:

Օրինակ #1 apc.rfc1867 օգտագործման օրինակ

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

Այս օրինակի գործարկման արդյունքը կլինի այսպիսին.

Զանգված ( => 1142543 => 1142543 => 1828068.8 => փորձարկում => ֆայլ => /tmp/php8F => 0 => 1)

Apc.rfc1867_prefix որքան թույլ է տալիս համակարգը, այս պարամետրի ավելացումը կարող է օգնել:

Հիմնական նախածանց՝ օգտագործողի քեշի մուտքագրում օգտագործելու համար, որը ստեղծվել է rfc1867 ներբեռնման առաջընթացին հետևելու գործառույթով:

Apc.rfc1867_name որքան թույլ է տալիս համակարգը, այս պարամետրի ավելացումը կարող է օգնել:

Նշում է թաքնված ձևի դաշտի անուն, որը հնարավորություն կտա APC-ի ներբեռնման գործընթացը և նշելու օգտագործողի քեշի բանալու վերջածանցը:

Apc.rfc1867_freq որքան թույլ է տալիս համակարգը, այս պարամետրի ավելացումը կարող է օգնել:

Հաճախականությունը, որով օգտատիրոջ քեշի մուտքը կթարմացվի ֆայլի ներբեռնման ընթացքում: Այն կարող է նշվել կա՛մ որպես տոկոս, կա՛մ չափը բայթերով նշելով: Ցանկության դեպքում կարող եք օգտագործել վերջածանցներ «կ», «մ»Եվ «գ»(տառերի նկատմամբ զգայուն չէ) համապատասխանաբար կիլոբայթի, մեգաբայթի և գիգաբայթի համար: Եթե ​​նշեք զրո, թարմացումները տեղի կունենան հնարավորինս արագ, բայց դա կարող է դանդաղեցնել բեռնման ժամանակը:

Apc.rfc1867_ttl Apc.shm_segments

TTL rfc1867 գրառումների համար:

Apc.localcache Apc.write_lock

Թույլ է տալիս չարգելափակել տեղային գործընթացների ստվերային քեշերը, ինչը նվազեցնում է քեշում գրելու ընթացքում արգելափակման քանակը:

Apc.localcache.size Apc.shm_segments

Տեղական գործընթացի ստվերային քեշի չափը պետք է լինի բավականին մեծ՝ apc.num_files_hint-ի մոտ կեսը:

Apc.coredump_unmap Apc.write_lock

Թույլ է տալիս APC-ին ընդհատել այնպիսի ազդանշաններ, ինչպիսին է SIGSEGV-ը, որը թողարկվելիս գրում է coredump: Երբ այս ազդանշանները ստացվեն, APC-ն կփորձի ազատել ողջ ընդհանուր հիշողությունը, որպեսզի այն չներառի coredump-ում: Այս պարամետրը կարող է բարձրացնել համակարգի կայունությունը, երբ ստացվել է կրիտիկական ազդանշան և APC-ն կազմաձևված է մեծ քանակությամբ հիշողություն օգտագործելու համար:

թանկարժեք համակարգային զանգերը կանխելու համար:

Այս հատկությունը պոտենցիալ վտանգավոր է: Հիշողության ընդհանուր հատվածների ազատումը, երբ ստացվում է կրիտիկական ազդանշան, կարող է հանգեցնել անկանխատեսելի վարքագծի:

Մեկնաբանություն:

Չնայած որոշ միջուկներ հնարավորություն են տալիս անտեսելու ընդհանուր հիշողության որոշ հատվածներ հիմնական ֆայլ գրելիս, այս իրականացումները կարող են նաև անտեսել հիշողության կարևոր հատվածները, ինչպիսին է Apache-ի ցուցատախտակը:

apc.stat_ctime Apc.shm_segments

Ստուգեք ըստ ctime-ի, որպեսզի խուսափեք այնպիսի ծրագրերի հետ կապված խնդիրներից, ինչպիսիք են svn-ը կամ rsync-ը, համոզվելով, որ inode-ը չի փոխվել վիճակագրության վերջին անգամից ի վեր: Սովորաբար APC-ն ստուգում է միայն mtime-ը:

Apc.canonicalize բուլ

Եթե ​​անջատված է, հարաբերական ուղիները փոխակերպվում են կանոնականի առանց վիճակագրության ռեժիմում: Եթե ​​միացված է, ապա հոսքի փաթաթման միջոցով միացված ֆայլերը քեշ չեն պահվի, քանի որ realpath ()

չի աջակցում հոսքի փաթաթաններին: որքան թույլ է տալիս համակարգը, այս պարամետրի ավելացումը կարող է օգնել:

Apc.preload_path

Ընտրովի: Նշում է այն ուղին, որն օգտագործում է APC-ն գործարկման ընթացքում պահված տվյալները բեռնելու համար: բուլ

Apc.use_request_time

Օգտագործեք SAPI հարցման մեկնարկի ժամը TTL-ի համար: բուլ

Apc.file_md5

Գրեք md5 ֆայլերի հեշեր: Apc.shm_segments

Apc.lazy_functions

Թույլ է տալիս գործառույթների ծույլ բեռնում: Apc.shm_segments

Apc.lazy_classes

Կազմաձևման ֆայլը ամենից հաճախ գտնվում է /etc/php.d/apcu.ini-ում: Կազմաձևման ֆայլի օրինակ 8 ԳԲ RAM ունեցող սերվերի համար.

extension=apcu.so
apc.enable_cli = 1
apc.shm_segments = 1
apc.shm_size = 512M
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

PHP 5.3-ն օգտագործելիս նշեք extension=apc.so

FastCGI նշում. PHP-ի համար հայտնի APC opcode cache-ը չի կարող կիսել քեշը PHP FastCGI պրոցեսների միջև, քանի դեռ PHP-ն չի կառավարում երեխայի գործընթացները: Այսպիսով, քեշի արդյունավետությունը սահմանափակվում է mod_fcgid-ով; PHP-ի միաժամանակյա հարցումները կօգտագործեն տարբեր opcode քեշեր:

Հիմնական APCu կազմաձևման ատրիբուտների նկարագրությունը

apc.shm_segments Հիշողության հատկացված հատվածների քանակը: Շատ BSD համակարգեր ունեն հիշողության հատվածի ցածր սահմաններ: Կանխադրվածը 1 է:
Այս պարամետրերը վերահսկվում են պարամետրերով Համատեղ հիշողության հատվածի չափը սահմանվում է մեգաբայթերով: Խորհուրդ ենք տալիս նվազագույնը սահմանել 128 Մ, 8 ԳԲ ունեցող սերվերի համար՝ 512 Մ, 16 ԳԲ ունեցող սերվերի համար՝ 1024 Մ։ Եթե ​​օգտագործվում են մի քանի հատվածներ, ապա հիշողության չափը պետք է բաժանվի հատվածների քանակի վրա:
Եվ Այս տարբերակը թույլ է տալիս անջատել կամ միացնել APC-ն: Արժեքը 1 - միացված է, 0 - անջատված է:
(ձախում) ցույց կտա, թե քանի անգամ է քեշն ամբողջությամբ լցվել և ստիպված է եղել հարկադրաբար հեռացնել այն գրառումները, որոնց վերջին անգամ մուտք չի գործել PHP ֆայլի քեշավորման ժամանակը: Երբ սահմանվում է 0, թույլ է տալիս մաքրել ամբողջ քեշը, երբ հատկացված հիշողությունը լցված է:
apc.user_ttl Օգտագործողի տվյալների քեշավորման ժամանակը: Երբ սահմանվում է 0, թույլ է տալիս մաքրել ամբողջ քեշը, երբ հատկացված հիշողությունը լցված է:
apc.max_file_size Քեշավորված ֆայլի առավելագույն չափը:
apc.num_files_hint APC-ն օգտագործվում է հիշողության մեջ ֆայլերի տվյալների պահպանման կազմակերպումը օպտիմալացնելու համար: Խորհուրդ ենք տալիս սահմանել 10000-ից ավելի արժեք:
apc.user_entries_hint APC-ն օգտագործվում է հիշողության մեջ օգտագործողի փոփոխականների պահպանման կազմակերպումը օպտիմալացնելու համար: Խորհուրդ ենք տալիս սահմանել 10000-ից ավելի արժեք:
apc.file_update_protection Մի պահեք ֆայլերը, որոնք ստեղծվել են նշված վայրկյաններից քիչ առաջ: Թույլ է տալիս խուսափել մասամբ գրված ֆայլի քեշավորումից:

Սխալ Չհաջողվեց հիշողություն հատկացնել լողավազանի համար

Ներառում ().