Вопрос по БД, прибавить значение по времени

LG
На сайте с 17.01.2014
Offline
42
971

Доброе время суток, потратил пару часов в интернете и не нашел решение на свою поставленную цель.

Суть: Есть статистика посещения определенной страницы, значения вылетают из БД, цель моя в следующем, мне надо чтобы например каждые 30 минут эти значения в бд менялись +1, и этот процесс был не зависим от реального посещения страницы. СВОЕГО РОДА НАКРУТКА ДАННОГО СЧЕТЧИКА. В моей голове есть только мысли о UPDATE, но как правильно составить запрос я не знаю, не особо разбираюсь в программирование. Буду признателен, за участие в решение моей задачи.

$sql = 'INSERT INTO '.$this->getTableName().' (fk_i_item_id, dt_date, '.$column.') VALUES ('.$itemId.', \''.date('Y-m-d H:i:s').'\',1) ON DUPLICATE KEY UPDATE  '.$column.' = '.$column.' +1 ';
return $this->dao->query($sql);
Оптимизайка
На сайте с 11.03.2012
Offline
396
#1

You should use CRON task or MySQL event_scheduler feature. Check out this Stackoverflow thread.

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
LG
На сайте с 17.01.2014
Offline
42
#2

так если у меня таких страниц будет несколько тысяч) это сколько крон запросов будет делать каждые 30 минут, или это нормально?

Оптимизайка
На сайте с 11.03.2012
Offline
396
#3

No, only one cron task will required. In this single cron task you can execute any bash or PHP script to achive your needs. Do you need to update all table rows (with some filter, may be)? If yes, only one UPDATE query will be used. If no, please tell how you will to distinguish required pages from others.

If you kindly provide your database structure, it will help to show you concrete SQL query.

Ragnarok
На сайте с 25.06.2010
Offline
226
#4

LipGrad, да чего париться, возьми и вычисляй при выводе кол-во просмотров от исходного + "время с публикации в минутах"/30

//TODO: перестать откладывать на потом
totamon
На сайте с 12.05.2007
Offline
430
#5
LipGrad:
так если у меня таких страниц будет несколько тысяч) это сколько крон запросов будет делать каждые 30 минут, или это нормально?

запрос надо делать не на каждую новость, а один типа

UPDATE '.$this->getTableName().' SET '.$column.' = '.$column.' +1



---------- Добавлено 05.08.2016 в 00:09 ----------

Ragnarok:
возьми и вычисляй при выводе кол-во просмотров от исходного + "время с публикации в минутах"/30

тоже хороший вариант))

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
LG
На сайте с 17.01.2014
Offline
42
#6

Вот сама структура БД, тут на каждое объявление, идет подсчет просмотров на каждый день, на странице самого объявления суммируются все просмотры за все время по датам.

Получается мне надо чтобы запрос тоже как то к дате был привязан, и к id объявления и просто прибавлял на сегодняшнюю дату, а другие не трогал.

Мысли!!! Правильней наверное было бы сделать, два запроса от крона. На новые объявления в первый день размещения каждые 30 минут +1, а на старые объявления допустим каждый 3-5 часов +1.

LG
На сайте с 17.01.2014
Offline
42
#7

подскажите правильно я создал php к которому будет крон обращаться?

<?php

mysql_query("UPDATE oc_t_item_stats SET i_num_views = i_num_views +1");
?>
totamon
На сайте с 12.05.2007
Offline
430
#8

а код соединения с БД?)

LG
На сайте с 17.01.2014
Offline
42
#9
totamon:
а код соединения с БД?)

Это как?) наверное типа того:

require_once __dir__.'/'.'config.php';

//require_once ABS_PATH . '/' . 'config.php';

//Конфигурация

$dbuname = DB_USER;

$dbpass = DB_PASSWORD;

$dbhost = DB_HOST;

$dbname = DB_NAME;

---------- Добавлено 09.08.2016 в 12:24 ----------

totamon, Прошу помощи)

---------- Добавлено 09.08.2016 в 12:26 ----------

<?php


require_once __dir__.'/'.'config.php';
//require_once ABS_PATH . '/' . 'config.php';

//Конфигурация

$dbuname = DB_USER;
$dbpass = DB_PASSWORD;
$dbhost = DB_HOST;
$dbname = DB_NAME;

mysql_connect($dbhost, $dbuname, $dbpass) or die ("Error");
mysql_select_db($dbname);
mysql_query("SET NAMES 'UTF8'");

mysql_query("UPDATE oc_t_item_stats SET i_num_views = i_num_views +1 WHERE dt_date = CURDATE()");

?>

я так создал, неправильно?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий