Տրված է.
- VPS սերվեր մշտական լիցենզիայով ispmanager lite 5
- 10-20 օգտվող մեկ սերվերի համար
- Google Օրացույց՝ կանոնավոր հիշեցումներով նրանց համար, ովքեր սպառել են հոսթինգը
- Այլ բանի համար վճարելն ամոթ է, հատկապես՝ բաժանորդագրությամբ։
Նպատակը Google-ի օրացույցից և հաճախորդին ձեռքով հիշեցումներ անելն է, որ նա պետք է վճարի հոսթինգի համար: Ազատվեք «թող մի քիչ էլ աշխատի, շուտով կվճարի», «անջատելն ինչ-որ կերպ անհարմար է» և դա վստահեք անհոգի մեքենային։
Իհարկե, նախ գուգլեցի, փնտրեցի, բայց լուծումներ չգտա, ամեն ինչ հանգեց նրան, որ պետք է բաժանորդագրվել BILLmanager-ին, բայց թիվ 4 կետն ինձ համար շատ կարևոր ու լուրջ է, չեմ ստանա. ազատվել դրանից: Եվ որոշումն այնքան էլ դժվար չի ստացվել։
Այսպիսով, ինչ ենք մենք անում:
Ստեղծեք թղթապանակ users.addon, /usr/local/mgr5/etc/sql/ գրացուցակում, երկու դատարկ ֆայլ.
- վճարման_ամսաթիվ
- uwemail
Սա հրաման կտա վահանակին ստեղծել տվյալների բազայում
/usr/local/mgr5/etc/ispmgr.db
օգտվողների աղյուսակում կան երկու համապատասխան դաշտեր, որտեղ գրվելու են ադմինիստրատորի վահանակի արժեքները:
Ստեղծեք ispmgr_mod_pay_data.xml անունով ֆայլ /usr/local/mgr5/etc/xml պանակում՝ բովանդակությամբ:
<?xml version="1.0" encoding="UTF-8"?>
<mgrdata>
<metadata name="user.edit">
<form>
<page name="main">
<field name="pay_date">
<input type="text" name="pay_date"/>
</field>
<field name="uwemail">
<input type="text" name="uwemail"/>
</field>
</page>
</form>
</metadata>
<lang name="ru">
<messages name="user.edit">
<msg name="pay_date" sqlname="pay_date">Оплачено до</msg>
<msg name="uwemail" sqlname="uwemail">Пользовательский email</msg>
</messages>
</lang>
<lang name="en">
<messages name="user.edit">
<msg name="pay_date" sqlname="pay_date">Paid before</msg>
<msg name="uwemail" sqlname="uwemail">User email</msg>
</messages>
</lang>
</mgrdata>
Սա վահանակին տալիս է կանոն, որպեսզի մեր դաշտերը ցուցադրվեն օգտագործողի խմբագրման ձևով:
Վերագործարկեք վահանակը.
/usr/local/mgr5/sbin/mgrctl -m ispmgr exit
Մենք ստանում ենք `
Դաշտերում գրում ենք մինչև որ օրը պետք է աշխատի հոսթինգը, և օգտատիրոջ որ նամակը, որտեղ հիշեցումներ ուղարկել, որ հոսթինգը շուտով կավարտվի։
Այժմ մենք պետք է ստեղծենք սկրիպտ, որը օգտվողներին կհիշեցնի, որ հոսթինգն ավարտվում է որոշ ընդմիջումներով: Տեղեկացրեք ադմինիստրատորին, որ հոսթինգն ավարտվում է: Տեղեկացրեք օգտվողին և ադմինիստրատորին, որ օգտագործողը անջատված է:
Ինձ դուր է գալիս php-ն դրա վրա և գրեցի սցենար:
<?php
$adminemail = "[email protected]"; // email админа
$day_send_message = [30,7,5,3,1]; // за сколько дней и с какой переодичностью будет напоминать пользователю что хостинг заканчивается
$db = new SQLite3('/usr/local/mgr5/etc/ispmgr.db');
$results = $db->query('SELECT * FROM users WHERE active == "on" AND pay_date IS NOT NULL');
while ($user = $results->fetchArray()) {
$days_left=floor( ( strtotime($user['pay_date']) - time() ) / (60 * 60 * 24));
if(in_array($days_left, $day_send_message)){
if($user['uwemail'] != ""){
mail($user['uwemail'], 'ISPMANAGER заканчивается хостинг через '.$days_left.' днейя', "Текст для пользователя о том что осталось столько то дней");
}
}
if( $days_left == 3 ) {
mail($adminemail, 'ISPMANAGER USER '.$user['name'], $user['name'] . " Закончится хостинг через ".$days_left." дня");
}
if($days_left <= 0){
mail($adminemail, 'ISPMANAGER USER '.$user['name'].' DISABLED', $user['name'].' Отключен');
exec("/usr/local/mgr5/sbin/mgrctl -m ispmgr user.suspend elid=".$user["name"]);
if( $user['uwemail'] != "" ) {
mail($user['uwemail'], 'ISPMANAGER хостинг отключен', 'Текст для пользователя что хостинг закончился');
}
}
// при желании можно еще написать небольшой IF что бы данные удалялись через некоторое время, но мне это не нужно
}
Մենք պահում ենք այս սկրիպտը ցանկացած վայրում և այն անվանում ենք ինչպես ուզում ենք, և ավելացնում ենք cron առաջադրանք՝ այն օրը մեկ անգամ զանգահարելու համար: Ամեն ինչ պատրաստ է։
Հիմա խիղճս հանգիստ է, դոդոշը կշտացել է, հավելյալ ծախսեր չեմ կատարել։
Մնում է լրացնել օգտատերերի տվյալները, թե որ ամսաթվի համար վճարվել է հոսթինգը, և օգտատերերի էլ.փոստը, թե որտեղ պետք է հիշեցումներ ուղարկել օգտվողներին։
Ուրախ եմ, եթե դա օգնում է ինչ-որ մեկին:
Source: www.habr.com