Ծանուցումը հայտնվեց միանալուց քսան րոպե անց։ Դրա տակի հաշվիչը աշխատում էր նախորդ առավոտից, կամ հաշվի վերջին նույնականացումից ի վեր, և ոչինչ ազդարարման մեջ չէր ասում, թե որն է։ Դա է ախտանիշը՝ հիշեցում, որը կապված է ձեր առջևի միացումից բացի այլ բանի հետ։

Լուծումը ավելի լավ ազդարարում չէ։ Լուծումը որոշելն է, թե պահանջը որ ժամացույցն է նկատի ունենում, և հետո ժամաչափը կապել այդ ժամացույցում գոյություն ունեցող օբյեկտի հետ։

Ինչ գործարկվեց, և ինչ էր հաշվում

Երեք հավանական աղբյուր տալիս են նույն հաղորդագրությունը։ Օրացույցի կանոնը աշխատում է ֆիքսված տեղական ժամին և ոչինչ չգիտի թունելների մասին։ Հաճախորդի հաշվիչը կուտակվում է, քանի դեռ որևէ միացում գործում է, և դիմանում է վերամիացումներին։ Դարպասի քաղաքականությունը սեսիան ավարտում է սերվերի կողմից և նախազգուշացում ուղարկում նախապես։

Միայն վերջին երկուսն են սեսիայի մասին, և նույնիսկ նրանք չեն համաձայնում։ Հաճախորդի հաշվիչը չափում է այն, ինչ նկատել է տեղական գործընթացը. դարպասը չափում է այն, ինչ նույնականացրել և հաշվառել է։ Քունը, ցանցի փոփոխությունը կամ դիտորդի վերագործարկումը կարող են նրանց բաժանել ժամերով, և դրա համար է, որ ազդարարումն ու պարտադրված ժամկետը հեռանում են իրարից։

Երեք ժամացույց մեկ պահանջի հետևում

Սկսեք գրել այն նախադասությունը, որն իրականում ուզում եք։ Նախազգուշացնելը մինչև դարպասը կավարտի այս միացումը, նույն պահանջը չէ, ինչ մեկ օր միացված ժամանակից հետո հիշեցնելը։ Դա նաև նույնը չէ, ինչ հայտնելը, որ այս սեսիան արդեն 23 ժամ գործում է։ Յուրաքանչյուր տարբերակ անվանում է այլ իրադարձություն, և այլ բաղադրիչ պետք է պատասխանի դրան։

Ապա ստուգեք՝ արդյոք տվյալները գոյություն ունեն։ Տեղական մեկնարկի ժամադրոշմը տալիս է սեսիայի տարիքը՝ առանց սերվերից կախվածության։ Դարպասի քաղաքականությունը տալիս է մնացած կյանքի տևողությունը, բայց միայն եթե դարպասը բացահայտում է այն։ Օգտագործման հաշվետվությունը տալիս է տևողությունը փաստից հետո, և դա չի կարող առաջնորդել նախնական ծանուցում։

Կապեք ժամաչափը սեսիային, ոչ թե հաշվին

Նախ ընտրեք օբյեկտը։ Հաշիվը կարող է պահել մի քանի սարք և մի քանի միաժամանակյա սեսիա, ուստի օգտանվան վրա խարսխված հիշեցումը չի կարող ասել, թե որ միացումն է հասել տարիքին։ Կապեք այն պրոֆիլին և այդ ակտիվացմանը, և ակտիվացման ավարտին չեղարկեք սպասող ծանուցումը։

Evidence you can readWhat it establishesWhere it misleads
Connection state changes to activeA session started nowDoes not carry the gateway's own session identifier
Duration reported at disconnectTotal service time for that sessionArrives too late for any advance notice
Interim usage updateTime accounted up to that updateStaleness equals the update interval
Local timestamp taken at activationAge of your observationResets whenever the observer restarts

Այդ աղյուսակը պայմանագիր է ձեր սեփական ծանուցիչի համար, ոչ թե որևէ հաճախորդի հետադարձ կանչի API-ի նկարագրություն։ Ինչ էլ որ տեղադրված արտադրանքը փաստագրում է միացման վիճակի մասին, դա է այն աղբյուրը, որին պետք է կապվել. որտեղ այն բացահայտում է միայն նույնականացման իրադարձություններ, ասեք դա բարձր և ընդունեք ավելի կոպիտ վարքը՝ սեսիա ենթադրելու փոխարեն։

Փորձարկեք կարճ շեմով

Երբեք մի վրիպազերծեք մեկօրյա ժամաչափը մեկօրյա սպասումով։ Ավելացրեք կարգավորվող շեմ, դրեք այն երեսուն վայրկյան, և հերթով անցկացրեք չորս անցում՝ միանալ, սպասել, անջատվել, նորից միանալ։ Յուրաքանչյուր անցում պետք է տա ճիշտ մեկ վիճակի փոփոխություն, և վերամիացումը պետք է նշանակի նոր ժամկետ՝ հինը ժառանգելու փոխարեն։

# current connection state and profile identity
nmcli -f GENERAL.STATE,GENERAL.CONNECTION connection show work

# the notifier unit you wrote: does it restart the deadline or resume it?
journalctl --user -u vpn-timer.service --since "-5 min" -o cat

Նայեք ժամադրոշմերին, ոչ թե ձևակերպմանը։ Ծանուցումը, որը գալիս է նախորդ սեսիայի մեկնարկի ժամով, կապել է սխալ օբյեկտը, և ծանուցումը, որը գալիս է երկու անգամ մեկ ժամկետի համար, նշանակում է, որ ուղարկվածի դրոշը երբեք չի պահպանվել։

Քուն, վերամիացում և բաց թողնված առաքում

Քունը կոտրում է երկու միամիտ նախագծերն էլ։ Միապաղաղ հետհաշվարկը կանգ է առնում, մինչ մեքենան քնում է, պատի ժամացույցի ժամկետը շարունակում է շարժվել, և քնի ընթացքում բռնկվող ժամաչափը հասցվում է ուշ կամ ընդհանրապես չի հասցվում։ Որոշեք, թե ձեր պահանջին որ վարքն է պետք, ապա քնեցրեք մեքենան շեմից այն կողմ և հաստատեք։

Առաքումը նույն խնամքին է արժանի։ Եթե ծանուցումը հնարավոր չէ ցուցադրել, դրեք այն հերթի մեջ և նախքան վերջնական ցուցադրումը նորից ստուգեք, որ թիրախ սեսիան դեռ գոյություն ունի. այլապես օգտատերը զգուշացվում է արդեն ավարտված միացման մասին։ Հարկադիր անջատումը և վկայականների նորացումը մնում են այս ուղուց դուրս, որովհետև հիշեցումը, որը լուռ փոխում է միացման ճակատագիրը, ծանուցման հագուստ հագած քաղաքականության որոշում է։

Առնչվող հոդվածներ