За последние 24 часа нас посетили 59140 программистов и 1812 роботов. Сейчас ищут 864 программиста ...

Очистка данных в 00:00

Тема в разделе "PHP для новичков", создана пользователем Invision, 2 янв 2011.

  1. Jampire

    Jampire Активный пользователь

    С нами с:
    22 авг 2009
    Сообщения:
    181
    Симпатии:
    0
    Адрес:
    Гомель
    Какой к черту лимит для count()??? Почитайте, что такое count и как он работает. Count ведет подсчет всех строк удовлетворяющих условию. Если учесть, что у вас еще и индексы должны стоять на столбцах, то выполнение должно быть мгновенным. Далее не забывайте включить кеш мускула. Если кеш включен, то запрос будет проходить только один раз за время жизни кеша. Остальные запросы будут брать результат из кеша.
    Если не хотите делать каждый раз запрос в бд, то лучше всего реализовать все через крон. На худой конец сделайте кеш для страницы скрипта. Скрипт сперва будет проверять существует ли кеш и если да, то останов.
     
  2. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Jampire, спс буду знать) я просто сделал выполнение этого кода в определенный промежуток времени..
     
  3. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    И еще у меня постоянно считает:

    Он постоянно ищет запись ну и если нету то добавляет. Если есть то обновляет "хиты" +1. Так вот, в скрипте подсчет идет в 2-х таблицах. access и site_stats. Есть ли еще альтернатива "попроще" проверить? Каждый запрос на подсчет и генерацию жрет около 0.0012 м/сек..
     
  4. Jampire

    Jampire Активный пользователь

    С нами с:
    22 авг 2009
    Сообщения:
    181
    Симпатии:
    0
    Адрес:
    Гомель
    Код (Text):
    1. if (!mysql_query("INSERT INTO $t_site_stats (http_host, hits, hosts, date, now) VALUES ('$http_host',1,0, '$user_date', 1)"))    {
    2.     mysql_query("UPDATE $t_site_stats SET `hits` = `hits` + 1 WHERE `http_host` = '$http_host' AND `now` = 1");
    3. }
    Сразу делаем попытку вставки. Если весь прочий код, реализован верно, то операция вставки вернет false, если данные уже присутствуют в таблице. А значит их надо обновить. Если данных нет, будет произведена вставка. Результат будет true и код в теле if не выполниться.
     
  5. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Супер) Но ведь date уже будет с другим значением, тогда вернет true? К сожалению на практике так и есть.. Тогда нужно делать проверку данных кроме date..