Автоматично ъпдейтване на поле в db през определено време
Автоматично ъпдейтване на поле в db през определено време
Здравейте,
искам да направя така, че всеки един месец на 1ви дадена група от потребители да им се ъпдейтва зададено от мен поле с някаква стойност.
Става дума за нещо такова:
[sql]UPDATE members SET bonus=bonus+3 WHERE group_id= '$group'[/sql]
Как може да стане това?
искам да направя така, че всеки един месец на 1ви дадена група от потребители да им се ъпдейтва зададено от мен поле с някаква стойност.
Става дума за нещо такова:
[sql]UPDATE members SET bonus=bonus+3 WHERE group_id= '$group'[/sql]
Как може да стане това?
Last edited by dunix on Wed Dec 11, 2013 6:48 pm, edited 1 time in total.
- plamen_003
- Турист
- Posts: 494
- Joined: Mon Nov 26, 2007 8:16 pm
- Location: София
-
- Нов
- Posts: 6
- Joined: Wed Dec 11, 2013 9:55 pm
може да сложиш една проверка дали деня от месеца е 1ви, като кода трябва да го сложиш във файл който се зарежда винаги при влизане в сайта ти. примерче:
Code: Select all
if( date('d')==1 )
{
тук update db ...
}
- anonimen
- Web-tourist
- Posts: 1607
- Joined: Mon Jun 11, 2012 6:07 pm
- Location: Parse error: unexpected "}" in /home/index.php on line 26
Това е глупаво - представи си какво ще стане като влязат няколко човека в сайта ти? Ако има 100 посещения в първия ден от месеца, бонусите на VIP потребителите ще се увеличат с 300...legolas wrote:може да сложиш една проверка дали деня от месеца е 1ви, като кода трябва да го сложиш във файл който се зарежда винаги при влизане в сайта ти. примерче:
Code: Select all
if( date('d')==1 ) { тук update db ... }

Ето моето предложение:
[php]if(date('j') == 1) {
if(!file_exist("updated")){//
$f = fopen("updated", "w");
//сега тук ъпдейтваш
fclose($f);
}
}
else {
if(file_exist("updated")){
unlink("updated");
}
}
[/php]
Дори това не е най-доброто решение, защото ако във въпросния ден никой не влезе в сайта, таблицата няма да се ъпдейтне.
Аз имам следната идея: Създавам една таблица с едно поле и един запис където записвам последния ъпдейт: Примерно:
$sql = "SELECT IF(`last_update`<=NOW(),1,0) AS `update` FROM `table_name` LIMIT 1;
$r = mysql_query($sql);
$s = mysql_fetch_assoc($r);
if($s['update']==1){
$sql = "UPDATE`table_name` SET `last_update` = ADDDATE(NOW(),1)";
//Следващият ъпдейт - след минимум 1 ден
$r = mysql_query($sql);
... каквото друго трябва да се ъпдейтва ...
}
Проблема е, че ако няма посещения за този период, ще се пропусне един или няколко ъпдейта.
Това може да се реши като се направи проверка за колко периода (в случая дни) не е правен ъпдейт.
Искам да попитам запознатите, ако (хипотетично) има примерно 100 или 1000 заявки едновременно, има ли вероятност нещо да се обърка и да има повече от един ъпдейт ?
$sql = "SELECT IF(`last_update`<=NOW(),1,0) AS `update` FROM `table_name` LIMIT 1;
$r = mysql_query($sql);
$s = mysql_fetch_assoc($r);
if($s['update']==1){
$sql = "UPDATE`table_name` SET `last_update` = ADDDATE(NOW(),1)";
//Следващият ъпдейт - след минимум 1 ден
$r = mysql_query($sql);
... каквото друго трябва да се ъпдейтва ...
}
Проблема е, че ако няма посещения за този период, ще се пропусне един или няколко ъпдейта.
Това може да се реши като се направи проверка за колко периода (в случая дни) не е правен ъпдейт.
Искам да попитам запознатите, ако (хипотетично) има примерно 100 или 1000 заявки едновременно, има ли вероятност нещо да се обърка и да има повече от един ъпдейт ?
Е това няма да важи защото имам поле, което записва кога е направен последния ъпдейт и трябва да е lastupdate<=$now_time за да направи ъпдейта.anonimen wrote:Това е глупаво - представи си какво ще стане като влязат няколко човека в сайта ти? Ако има 100 посещения в първия ден от месеца, бонусите на VIP потребителите ще се увеличат с 300...
Да, но като хостинга ми са забранили whet трябва да посочвам файл, който да се пуска на зададеното от мен време. Ами ако хипотетично сменя хостинг-а и забравя да пусна тази cron задачка...tedo96 wrote:Това се прави с Cron задача, както ти казаха по-горе.
мм да, но тъй като моят cron файл няма само заявки към db, ами праща и имейли към потребители... няма да ми свърши много работа.marian wrote:Можеш да ползваш и това (зависи от това какво прави заявкта). Подобно е на cronjobs и Windows Task Scheduler, но е вградено в MySQL и не трябва да инсталираш нищо.