เชเชชเซเชฒ:
- เชเชพเชฏเชฎเซ เชฒเชพเชฏเชธเชจเซเชธ เชธเชพเชฅเซ VPS เชธเชฐเซเชตเชฐ ispmanager lite 5
- เชธเชฐเซเชตเชฐ เชฆเซเช 10-20 เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเช
- เชเซเชฎเชจเซ เชนเซเชธเซเชเชฟเชเช เชธเชฎเชพเชชเซเชค เชฅเช เชเช เชเซ เชคเซเชฎเชจเชพ เชฎเชพเชเซ เชจเชฟเชฏเชฎเชฟเชค เชฐเซเชฎเชพเชเชจเซเชกเชฐเซเชธ เชธเชพเชฅเซ Google เชเซเชฒเซเชจเซเชกเชฐ
- เช เชจเซเชฏ เชเชเชเชชเชฃ เชฎเชพเชเซ เชเซเชเชตเชฃเซ เชเชฐเชตเซ เชถเชฐเชฎเชเชจเช เชเซ, เชเชพเชธ เชเชฐเซเชจเซ เชธเชฌเซเชธเซเชเซเชฐเชฟเชชเซเชถเชจ เชธเชพเชฅเซ.
เชงเซเชฏเซเชฏ เชเซเชฒเชพเชฏเชจเซเชเชจเซ Google เชเซ
เชฒเซเชจเซเชกเชฐ เช
เชจเซ เชฎเซเชจเซเชฏเซเช
เชฒ เชฐเซเชฎเชพเชเชจเซเชกเชฐเซเชธเชฅเซ เชเซเชเชเชพเชฐเซ เชฎเซเชณเชตเชตเชพเชจเซ เชเซ เชเซ เชคเซเชจเซ เชนเซเชธเซเชเชฟเชเช เชฎเชพเชเซ เชเซเชเชตเชฃเซ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. "เชคเซเชจเซ เชฅเซเชกเซเช เชตเชงเซ เชเชพเชฎ เชเชฐเชตเชพ เชฆเซ, เชคเซ เชเซเชเช เชธเชฎเชฏเชฎเชพเช เชเซเชเชตเชฃเซ เชเชฐเชถเซ", "เชคเซเชจเซ เชฌเชเชง เชเชฐเชตเซเช เชเซเชเช เชฐเซเชคเซ เช
เชธเซเชตเชฟเชงเชพเชเชจเช เชเซ" เชฅเซ เชชเซเชคเชพเชจเซ เชฎเซเชเซเชค เชเชฐเซ, เช
เชจเซ เชเชจเซ เชเชคเซเชฎเชพ เชตเชฟเชจเชพเชจเชพ เชฎเชถเซเชจเชจเซ เชธเซเชเชชเซ.
เช
เชฒเชฌเชคเซเชค, เชฎเซเช เชชเชนเซเชฒเชพ เชเซเชเชฒ เชเชฐเซเชฏเซเช เช
เชจเซ เชถเซเชงเซเชฏเซเช, เชชเชฐเชเชคเซ เชฎเชจเซ เชเซเช เชเชเซเชฒ เชฎเชณเซเชฏเซ เชจเชนเซเช, เช เชฌเชงเซเช เช เชนเชเซเชเชค เชชเชฐ เชเชญเชฐเซ เชเชตเซเชฏเซเช เชเซ เชคเชฎเชพเชฐเซ BILLmanager เชชเชฐ เชธเชฌเซเชธเซเชเซเชฐเชพเชเชฌ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ, เชชเชฐเชเชคเซ เชฌเชฟเชเชฆเซ เชจเชเชฌเชฐ 4 เชฎเชพเชฐเชพ เชฎเชพเชเซ เชเซเชฌ เช เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เช
เชจเซ เชเชเชญเซเชฐ เชเซ, เชฎเชจเซ เชฎเชณเชถเซ เชจเชนเซเช. เชคเซเชฎเชพเชเชฅเซ เชเซเชเชเชพเชฐเซ เชฎเซเชณเชตเซ. เช
เชจเซ เชจเชฟเชฐเซเชฃเชฏ เชเชเชฒเซ เชฎเซเชถเซเชเซเชฒ เชจ เชนเซเชตเชพเชจเซเช เชฌเชนเชพเชฐ เชเชตเซเชฏเซเช.
เชคเซ เชเชชเชฃเซ เชถเซเช เชเชฐเซเช?
เชเช เชซเซเชฒเซเชกเชฐ user.addon เชฌเชจเชพเชตเซ, /usr/local/mgr5/etc/sql/ เชกเชฟเชฐเซเชเซเชเชฐเซเชฎเชพเช, เชฌเซ เชเชพเชฒเซ เชซเชพเชเชฒเซ:
- เชเซเชเชตเชฃเซ_เชคเชพเชฐเซเช
- uwemail
เช เชกเซเชเชพเชฌเซเชเชฎเชพเช เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซ เชชเซเชจเชฒเชจเซ เชเชฆเซเชถ เชเชชเชถเซ
/usr/local/mgr5/etc/ispmgr.db
เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชเชจเชพ เชเซเชทเซเชเชเชฎเชพเช เชฌเซ เช
เชจเซเชฐเซเชช เชซเซเชฒเซเชก เชเซ เชเซเชฏเชพเช เชเชกเชฎเชฟเชจ เชชเซเชจเชฒเชจเชพ เชฎเซเชฒเซเชฏเซ เชฒเชเชตเชพเชฎเชพเช เชเชตเชถเซ.
เชธเชพเชฎเชเซเชฐเซ เชธเชพเชฅเซ /usr/local/mgr5/etc/xml เชซเซเชฒเซเชกเชฐเชฎเชพเช ispmgr_mod_pay_data.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 ััะพ ะฑั ะดะฐะฝะฝัะต ัะดะฐะปัะปะธัั ัะตัะตะท ะฝะตะบะพัะพัะพะต ะฒัะตะผั, ะฝะพ ะผะฝะต ััะพ ะฝะต ะฝัะถะฝะพ
}
เช เชฎเซ เช เชธเซเชเซเชฐเชฟเชชเซเชเชจเซ เชเชฎเซ เชคเซเชฏเชพเช เชธเชพเชเชตเซเช เชเซเช เช เชจเซ เช เชฎเชจเซ เชเซ เชเซเชเช เชคเซ เชเซเชฒ เชเชฐเซเช เชเซเช, เช เชจเซ เชคเซเชจเซ เชฆเชฟเชตเชธเชฎเชพเช เชเชเชตเชพเชฐ เชเซเชฒ เชเชฐเชตเชพ เชฎเชพเชเซ เชเซเชฐเซเชจ เชเชพเชฐเซเชฏ เชเชฎเซเชฐเซเช เชเซเช. เชฌเชงเซเช เชคเซเชฏเชพเชฐ เชเซ.
เชนเชตเซ เชฎเชพเชฐเซ เช เชเชคเชฐเชพเชคเซเชฎเชพ เชธเซเชชเชทเซเช เชเซ, เชฆเซเชกเชเซ เชธเชเชคเซเชทเซเช เชเซ, เช เชจเซ เชฎเซเช เชเซเช เชตเชงเชพเชฐเชพเชจเซ เชเชฐเซเช เชเชฐเซเชฏเซ เชจเชฅเซ.
เชเซ เชฌเชพเชเซ เชเซ เชคเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชเชฎเชพเช เชกเซเชเชพ เชญเชฐเชตเชพเชจเซเช เชเซ เชเซ เชเช เชคเชพเชฐเซเชเซ เชนเซเชธเซเชเชฟเชเช เชฎเชพเชเซ เชเซเชเชตเชฃเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชนเชคเซ เช เชจเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชเชจเซ เชฐเซเชฎเชพเชเชจเซเชกเชฐเซเชธ เชเซเชฏเชพเช เชฎเซเชเชฒเชตเชพ เชคเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชเชจเชพ เชเชฎเซเชเชฒ.
เชเซ เชคเซ เชเซเชเชจเซ เชฎเชฆเชฆ เชเชฐเซ เชคเซ เชเชจเชเชฆ เชฅเชพเชฏ เชเซ.
เชธเซเชฐเซเชธ: www.habr.com