လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP applications များ၏စွမ်းဆောင်ရည်ကို Session_GC မှတစ်ဆင့်မည်သို့တိုးတက်အောင်လုပ်ရမည်နည်း။

PHP applications များ၏စွမ်းဆောင်ရည်ကို Session_GC မှတစ်ဆင့်မည်သို့တိုးတက်အောင်လုပ်ရမည်နည်း။

gitbox 2025-05-29

1 ။ Session_GC ဆိုတာဘာလဲ။

Session_GC () သည် PHP ၏ပြည်တွင်းရေး function ကိုဖြစ်ပြီး၎င်း၏ function သည်အမှိုက်များစုဆောင်းခြင်းယန္တရားကိုလုပ်ဆောင်ရန်ဖြစ်သည်။ PHP သည်သက်တမ်းကုန်ဆုံးသော session files များကိုသန့်ရှင်းရေးလုပ်ရန်အသုံးပြုသူတောင်းဆိုမှုများတွင်အချို့သောဖြစ်နိုင်ခြေရှိသောဖြစ်နိုင်ခြေတစ်ခုဖြင့်ဤလုပ်ငန်းကိုဖြစ်ပေါ်စေသည်။ ပုံမှန်အပြုအမူကိုအောက်ပါ configuration သုံးပစ္စည်းများဖြင့်ဆုံးဖြတ်သည်။

 ini_get('session.gc_probability'); // ပုံမှန်တန်ဖိုး:1
ini_get('session.gc_divisor');     // ပုံမှန်တန်ဖိုး:100
ini_get('session.gc_maxlifetime'); // ပုံမှန်တန်ဖိုး:1440 စက်ဏန့်(24 မိနစ်)

ဆိုလိုသည်မှာ - တောင်းဆိုမှု 100 တိုင်းတွင် session_GC ကို GC_MAXLIFTIME ထက်ကျော်လွန်သော session files အားလုံးကိုရှင်းလင်းရန်,

2 ။ session_gc ၏သက်ရောက်မှုအပေါ်သက်ရောက်မှု

1 ။ ဖိုင်စနစ်တွင် botlenecks

PHP သည်ဆာဗာ၏ဖိုင်စနစ်တွင် Session Data session data (များသောအားဖြင့် / tmp လမ်းညွှန်) ဖြင့် Session Data ။ Peach_gc တိုင်းကွပ်မျက်ခံရတိုင်း PHP သည်ဤလမ်းညွှန်တွင် session files အားလုံးကို scan ဖတ်ရန်လိုအပ်သည်။ အစည်းအဝေးဖိုင်များသေးငယ်သည့်အခါဤစစ်ဆင်ရေးသည်အသေးအဖွဲ 0 င်ကြည့်ရှုခြင်းသို့မဟုတ် session retention tening အချိန်ရှိသည့်အခါ,

2 ။ ယှဉ်ပြိုင်မှုပြ issue နာကိုသော့ခတ်ပါ

အကယ်. အကြိမ်ကြိမ်တောင်းဆိုမှုများသည်တစ်ချိန်တည်းတွင် session_gc ကိုအစပျိုးပါက၎င်းသည်သော့ခတ်ပြိုင်ပွဲကိုဖြစ်ပေါ်စေနိုင်သည်။ ၎င်းသည်အထူးသဖြင့်တစ်ပြိုင်နက်တည်းကတစ်ပြိုင်နက်တည်းစနစ်များတွင်အန္တရာယ်ရှိသည်။ အနည်းဆုံးတော့တုန့်ပြန်မှုမြန်နှုန်းကိုလျှော့ချပြီးအဆိုးဆုံးမှာ server load ကိုတိုက်ရိုက်ဖြည့်ဆည်းပေးပါတယ်။

3 ။ Session_GC အတွက်အကောင်းဆုံးနည်းဗျူဟာ

1 ။ အလိုအလျောက် GC ကိုပိတ်ထားပါ

အသုံးအများဆုံးနည်းလမ်းမှာ PHP ၏အလိုအလျောက် GC ကိုပိတ်ထားရန်မှာ PHP ၏အလိုအလျောက် GC ကိုပိတ်ထားရန်ဖြစ်သည်။

 ini_set('session.gc_probability', 0);

ထို့နောက် 5 မိနစ်တိုင်းသန့်ရှင်းရေးလုပ်ခြင်းကဲ့သို့သောအချိန်ကိုက်ထားသောအလုပ်ကိုစီစဉ်ပါ။

 */5 * * * * php /var/www/html/session_gc.php

session_gc.php နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -

 <?php
ini_set('session.save_path', '/var/www/html/sessions');
ini_set('session.gc_maxlifetime', 3600); // သက်တမ်းကုန်ဆုံးချိန်သတ်မှတ်ထားပါ
session_start();
session_gc(); // ကိုယ်တိုင်သန့်ရှင်းရေးလုပ်ပါ

2 ။ ဖိုင်စနစ်များကိုအစားထိုးရန်ဒေတာဘေ့စ်သို့မဟုတ် in-memory သိုလှောင်မှုကိုသုံးပါ

session.save_Handler ကို memcached or redis ကို configure လုပ်ခြင်းအားဖြင့်စာဖတ်ခြင်း၏ထိရောက်မှုကိုများစွာတိုးတက်အောင်လုပ်နိုင်သည်။ PHP file system GC ၏စွမ်းဆောင်ရည်ပြ problems နာများကိုဤစနစ်၏ဇာတိသက်တမ်းကုန်ဆုံးနည်းဗျူဟာများ၏အကူအညီဖြင့်ရှောင်ရှားနိုင်သည်။

 ini_set('session.save_handler', 'redis');
ini_set('session.save_path', 'tcp://gitbox.net:6379');

Redis ၏ကိုယ်ပိုင် TTL ယန္တရားသည်လက်ဖြင့် 0 င်ရောက်စွက်ဖက်ခြင်းမရှိဘဲသက်တမ်းကုန်ဆုံးသောအစည်းအဝေးများအလိုအလျောက်ဖျက်နိုင်သည်။

3 ။ session_lazy_GC ကိုအသုံးပြုခြင်း (PHP 7.1+)

PHP 7.1 မှစတင်. Session.Lazy_write configuration item ကိုထည့်သွင်းပြီး, session file ကို Session Data အပြောင်းအလဲများမှသာရေးသားခဲ့သည်။ ၎င်းသည် Session_GC နှင့်တိုက်ရိုက်ဆက်နွယ်မှုမရှိသော်လည်း၎င်းသည်မလိုအပ်သောရေးသားမှုစစ်ဆင်ရေးများကိုလျှော့ချနိုင်ပြီးစွမ်းဆောင်ရည်ကိုသွယ်ဝိုက်တိုးတက်စေနိုင်သည်။

 ini_set('session.lazy_write', 1);

4 ။ လက်တွေ့ကိစ္စများ - ကြီးမားသောကုန်တိုက်ကြီး၏အကောင်းမြင်အလေ့အကျင့်

ကြီးမားသောလည်ပတ်မှုများရှိသော B2C Mall တွင်မူလပြင်ဆင်မှုသည်ရာနှင့်ချီသော session files များဖြစ်ပွားခဲ့သည် Session_GC Execute တစ်ခုစီသည် CPU ကိုမြင့်တက်စေပြီးစာမျက်နှာတုံ့ပြန်မှုသည်သိသိသာသာတိုးပွားလာသည်။

Optimization Plan သည်အောက်ပါအတိုင်းဖြစ်သည် -

  1. အလိုအလျောက် GC ကိုပိတ်ပါ။

  2. စတိုးဆိုင်များစတိုးဆိုင်များသို့ redis ကိုသုံးပါ။

  3. နောက်ခံအလုပ်သည် session_gc () (အခြားရွေးချယ်စရာ) ကို 2 A.m တွင်ပြုလုပ်သည်။ ;

  4. login live ်ဌာန်းချက်ကာလကိုတိုးချဲ့ရန် Session.gc_Maxlifetime ကို 7200 စက္ကန့်အထိချိန်ညှိပါ။

အွန်လိုင်းတွင်အွန်လိုင်းသွားလာပြီးနောက်စနစ်တကျတုန့်ပြန်မှုသည်ပျမ်းမျှအားဖြင့် 30% ကျဆင်းသွားပြီးပျမ်းမျှအားဖြင့်စက္ကန့်အနည်းငယ်မှမိနစ်အနည်းငယ်မှအနည်းငယ်သောင်းချီသောသောင်းချီသည်

V. နိဂုံးချုပ်

Session_GC သည် "backend task" ဖြစ်သော်လည်း၎င်း၏ပုံမှန်အပြုအမူသည်တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်းကပါ 0 င်သောစွမ်းဆောင်ရည်ပြောင်ပြောင်တင်းတင်းဖြစ်လာနိုင်သည်။ အမှန်တကယ်စီးပွားရေးအခြေအနေများအပေါ် အခြေခံ. ၎င်း၏မူများကိုနားလည်ခြင်းနှင့် configururations များကိုစိတ်ကြိုက်ပြုပြင်ခြင်းသည် PHP application များ၏တည်ငြိမ်မှုနှင့်စွမ်းဆောင်ရည်ကိုတိုးတက်ကောင်းမွန်စေသည်။

အကောင်းဆုံးအလေ့အကျင့်အကျဉ်းချုပ်

  • ကြီးမားသောစီမံကိန်းများတွင်အလိုအလျောက် GC ကိုပိတ်ထားပြီးအချိန်ကိုက်အလုပ်များကိုအသုံးပြုပါ။

  • စတိုးဆိုင်များသိုလှောင်ရန် Redis / Memcached ကိုသုံးရန်ကြိုးစားပါ။

  • ကျိုးကြောင်းဆီလျော်သော configuration ဖြင့် gc_maxlifetime ကို configure လုပ်ပါ။

  • disk ရေးသားခြင်းကိုလျှော့ချရန် session.lazy_write ကို သုံးပါ။

ဤကျွမ်းကျင်မှုများကိုကျွမ်းကျင်ခြင်းသည်စွမ်းဆောင်ရည်အားနည်းခြင်းမဖြစ်နိုင်ပါ။