Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Выполнить только один раз (PHP+MySql)

4
08 июля 2003 года
mike
3.7K / / 01.10.2002
Необходим выполнить некоторое действие только один раз.

Один раз в сутки отправляется отчет о работе сайта за сутки. Делается - это просто - сверяется текущая дата, с датой последнего обращения и если дата изменилась, то проделываем соотв. действия:

Так вот, при большой посещаемости сайта, отчет высылается несколько раз!!! Надо какой-то Lock сделать, а какой ?? так чтоб и красиво, и просто, и гибко.

Код:
$r=mysql_query("SELECT DATE_FORMAT(last,'%d') FROM counter where id='$login'");
if (mysql_result($r,0,0)!=date("d")) {
    $date=date("Y-m-d H:i:s",mktime(0,0,0,date("m")  ,date("d")-1,date("Y")));
    $r=mysql_query("SELECT id,hits,hosts,users FROM counter");
    for ($i=0;$i<mysql_num_rows($r);$i++) {
        $id=mysql_result($r,$i,0);
        $hits=mysql_result($r,$i,1);
        $hosts=mysql_result($r,$i,2);
        $users=mysql_result($r,$i,3);
        mysql_query("INSERT INTO counter_total set id='$id',hits='$hits',hosts='$hosts',date='$date', users='$users';");
        }
    $sdays=intval($COUNTER["savelog"]);if ($sdays<1 || $sdays>30) $sdays=30;
    mysql_query("UPDATE counter SET hits=0, hosts=0, users=0");
    nmail();
    }
250
08 июля 2003 года
Joker
1.4K / / 20.02.2000
Цитата:
Originally posted by mike
Необходим выполнить некоторое действие только один раз.

Один раз в сутки отправляется отчет о работе сайта за сутки. Делается - это просто - сверяется текущая дата, с датой последнего обращения и если дата изменилась, то проделываем соотв. действия:

Так вот, при большой посещаемости сайта, отчет высылается несколько раз!!! Надо какой-то Lock сделать, а какой ?? так чтоб и красиво, и просто, и гибко.

Код:
$r=mysql_query("SELECT DATE_FORMAT(last,'%d') FROM counter where id='$login'");
if (mysql_result($r,0,0)!=date("d")) {
    $date=date("Y-m-d H:i:s",mktime(0,0,0,date("m")  ,date("d")-1,date("Y")));
    $r=mysql_query("SELECT id,hits,hosts,users FROM counter");
    for ($i=0;$i<mysql_num_rows($r);$i++) {
        $id=mysql_result($r,$i,0);
        $hits=mysql_result($r,$i,1);
        $hosts=mysql_result($r,$i,2);
        $users=mysql_result($r,$i,3);
        mysql_query("INSERT INTO counter_total set id='$id',hits='$hits',hosts='$hosts',date='$date', users='$users';");
        }
    $sdays=intval($COUNTER["savelog"]);if ($sdays<1 || $sdays>30) $sdays=30;
    mysql_query("UPDATE counter SET hits=0, hosts=0, users=0");
    nmail();
    }



http://php.spb.ru/mysql/lock_tables.html

4
08 июля 2003 года
mike
3.7K / / 01.10.2002
Спасибо, это мне подходит!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог