Ծանրաբեռնված կայքի կենսունակության բարձրացում
Մի քիչ պաթետիկ անուն ստացվեց հոդվածի համար, բայց կարծում եմ դա արտահայտում է ներքոշարադրյալ կոնցեպտը:
Չեմ պնդի թե առաջին անգամ իմ մտքով է անցել այս կոնցեպտը, բայց որ չեմ հանդիպել իմ օգտագործած CMS-ներում (WordPress/Joomla/անհայտ ծագման), դա փաստ է:
Գաղափարը կայանում է նրանում, որ սահմանել մի boolean վերադարձնող ֆունկցիա, որը կհուշի, մեզ արդյո՞ք ծանրաբեռնված է աշխատում կայքը թե ոչ:
Եվ եթե ֆունկցիան վերադարձնում է true, ապա բոլոր երկրորդական բովանդակային բլոկները չենք գործարկի, ինչի արդյունքում կունենաք ժամանակավորապես կիսատ-պռատ, բայց գոնե հիմանական բովանդակությունը հասանելի կայք:
function is_high_load(){}
Ի՞նչ ասել է, երկրորդական բովանդակային բլոկներ: Օրինակը կբերեմ լրատվական կայքերի համար, այդպես ավելի պարզ կլինի.
- ամենաընթերցվածները (որպես կանոն ծանր sql-ով աշխատող մոդուլ է)
- որոնումը (թերևս ամենածանր մոդուլը)
- լուրերի tag-երը (wordpress-ով աշխատող կայքերի համար)
- լուրերի tag-երով որոնումը
- քվեարկություն
- WP_Calendar_widget (կրկին wordpress-ով աշխատող կայքերի համար)
- և այլն…
Այս բլոկները եթե ժամանակավորապես չցուցադրվեն, դրանից շատ բան չի տուժի, սակայն հիմանական բովանդակությունը` լրահոս և լուրեր, հասանելի կլինի օգտատերերին, մինչև հարձակումը կամ ծանրաբեռնված պահը անցնի:
Հիմա անդրադառնանք ֆունկցիային, որը պետք է հուշի ծգրագրին` արդյո՞ք ծանրաբեռնված է կայքը, թե` ոչ:
Այստեղ կա երկու տարբերակ, ավտոմատ և չավտոմատ(manual բառի համար ավելի լավ հոմանիշ չգտա): Ավտոմատը այն դեպքն է, երբ ֆունկցիան փորձում է ինքնուրույն հասկանալ արդյո՞ք համակարգի վրա ծանրաբեռնածություն կա, թե՞ ոչ, իսկ չավտոմատը պարզպես կարդում է ինչ-որ server-hiload.txt ֆայլ և վերադարձնում true կամ false:
Երկու դեպքում էլ, առաջարկում եմ չօգտագործել MySQL կամ SQL-based որևէ տվյալների բազա:
Ավտոմատ տարբերակի դեպքում ծրագրային իրականացման հարցը թողնում եմ բաց… քանի որ դա մեծ մասամբ ճաշակի ու կարողության հարց է, և բացի այդ այնպես պետք է գրել այդ ֆունկցիան որ հավելյալ ծանրաբեռնվածություն չառաջացնի համակարգի վրա, որն էլ ավելի է բարդացնում դրա գրելը:
Իսկ չավտոմատ տարբերակի համար կառաջարկեմ առաջին իսկ գլուխս եկած միտքը: Ստեղծել cron-job որը կաշխատի ամեն 10 րոպեն մեկ, ու կկատարի որոշակի ստուգումներ, ասենք տվյալների բազայից կարդալու արագությունը կամ ազատ հիշողության չափը կան նման մի/միքանի բան, ու կախված արդյունքներից server-hiload.txt ֆայլի մեջ կգրի true կամ false.
վերջ:
դե… զրահս կապած սպասում եմ ձեր քարերին
արտահայտվեք:
Բաժին: CMS - կառավարման համակարգեր, Վեբ






Ես քար չեմ գցի, շատ լավ միտք ա, ապրես
մերսի