[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Прибавление числа каждые 5 минут
234you
Не могу никак разобраться. Нужно, чтобы, к примеру, к числу 120 - каждые 5 минут прибавлялось 1 или 2.
Пробовал много вариантов, но не особо в этом разбираюсь.
Если есть энтузиасты, то есть хотелось бы, чтоб это прибавление работало только с 9 до 23 часов каждого дня.

Спасибо всем, кто откликнется!



Спустя 11 минут, 26 секунд (31.07.2012 - 13:42) DarkLynx написал(а):
Оно асинхронно должно прибавляться? (Без перезагрузки страницы)

Спустя 3 минуты, 23 секунды (31.07.2012 - 13:46) 234you написал(а):
Без... просто, чтоб прибавляло. К примеру зашел на сайт в 12:00 - там число 120. Зашёл в 12.30 - там уже 120 + 1 +2 +2 +1 + 2 (1 или 2 прибавляется)

Спустя 48 минут, 54 секунды (31.07.2012 - 14:34) pak написал(а):
а где всё это храниться будет?

Спустя 11 минут, 33 секунды (31.07.2012 - 14:46) DarkLynx написал(а):
Числа которые должны прибавляться какую то логику содержат?

Спустя 17 минут, 56 секунд (31.07.2012 - 15:04) 234you написал(а):
Цитата (pak @ 31.07.2012 - 15:34)
а где всё это храниться будет?

в файле menu.php

Спустя 2 минуты, 19 секунд (31.07.2012 - 15:06) 234you написал(а):
Цитата (DarkLynx @ 31.07.2012 - 15:46)
Числа которые должны прибавляться какую то логику содержат?

Это должно быть рандомное число в диапазоне от 1 до 2 включительно.
Я так понимаю. Что должна быть какая-то переменная к которой каждые 5 минут будет прибавляться 1 или 2. И уже эта переменная будет прибавляться к нужному мне числу.

Спустя 8 минут, 30 секунд (31.07.2012 - 15:15) kamanch написал(а):
Не нужно прибавлять каждые 5 минут.
Цитата
К примеру зашел на сайт в 12:00 - там число 120. Зашёл в 12.30 - там уже 120 + 1 +2 +2 +1 + 2 (1 или 2 прибавляется)

Пользователю, который зашел в 12:30, ему все равно, было ли каждые 5 минут сложение или за все 30 минут только что прибавили все числа.
Вот и проверяй: если со времени последнего обновления прошло более 5ти минут, то сколько там нужно нарамдомить, вот столько и прибавляй.

Спустя 2 минуты, 34 секунды (31.07.2012 - 15:17) 234you написал(а):
Не не не...это же нужно не только при обновлении страницы. Просто нужно чтоб с течением времени росло значение...

Спустя 2 минуты, 29 секунд (31.07.2012 - 15:20) kamanch написал(а):
Ну тогда кроном.

Спустя 21 секунда (31.07.2012 - 15:20) DarkLynx написал(а):
Для начала объясню вот что.
PHP скрипт отрабатывает только в момент его вызова. Вызвали, он подключился, отработал и умер.
При этом вызов PHP скрипта это в 90% случаях обращение через браузер, ну или cron например.
т.к. Вы хотите что бы числа прибавлялись всегда в оффлайн режиме (как я понял) Вам необходимо будет использовать cron..
Если бы эти числа были как то связаны, например каждый 5 минут прибавлялось число 2.. То можно былобы обойтись и без крон, а лишь хранить дату последнего обновления числа, само число и если разница стала более 5 минут (это может быть n число раз) прибавляет число..

И так, мое предложение такое
Пишите правило для cron которое будет запускаться каждые 5 минут с 9 до 23 часов. Число к которому прибавлять нужно где то хранить. Выбираете сами.. файлы или база.. Для такой задачи вполне и файлов хватит.. И сам скрипт будет заключаться в открытии файла, считывания числа, вычисления рандомного 1 или 2, прибавки его к считанному числу и записи обратно в файл.

Спустя 31 минута, 9 секунд (31.07.2012 - 15:51) 234you написал(а):
А если вне крона, как вы говорите... чтоб без рандома прибавлялось число 2. дайте пример пожалуйста

Спустя 43 минуты, 54 секунды (31.07.2012 - 16:35) DarkLynx написал(а):
Цитата (234you @ 31.07.2012 - 13:51)
А если вне крона, как вы говорите... чтоб без рандома прибавлялось число 2. дайте пример пожалуйста

Если без крона, вам нужно будет хранить поболее данных..
А именно, дату последнего обновления числа и число.

Будем хранить дату последнего обновления в UNIX формате.
Сэмулируем дату последнего последнего обновления. При этом на это время наше число равно 120.

$file = file('file.txt');
$lastUpd = $file[0]; // Получили допустим 1223102; Это число совершенно условное и написано хаотичным тыканием по цифрам клавы.
$number = $file[1]; // получили 120;

//Теперь нам надо увеличить число.


$curTime = time(); //Получили текущее время. Например оно получилось равным 1226102
// Проверяем. Дата последнего обновления меньше текущей или нет.
// Если да выполняем код.

if ($lastUpd < $curTime)
{
// Вычисляем разницу во времени
$difTime = $curTime - $lastUpd; // (1226102 - 1223102 = 3000). Это разница во времени. 3000 секунд.
// Считаем кол-во пятиминуток. (Шаг обновления числа) Для наглядности получения кол-ва секунд пишу развернуто, а то всякое бывает.

$stepTime = 5*60;
// Теперь нам надо узнать сколько пятиминуток вход в интервал прошедшего времени.
$count = $difTime / $setTime. // (3000 / 300 = 10). И так прошло 10 пятиминуток.
// Теперь нам нужно прибавить к нашему числу 10 рандомных чисел 1 или 2. Если конечно есть попадает хотя бы одна пятиминутка.

if ($count > 0)
{
for($i=0; $i<$count; $i++)
$number += mt_rand(1,2);
}

//Число получили. Запишем его обратно в файл.
$fop = fopen('file.txt', 'w');
// Для исключения и того малой погрешности, все таки получим текущее время еще раз.
$curTime = time();
//Сформируем строку записи и запишем..
$result = $curTime.'\r\n'.$number;
$fwr = fwrite($fop, $result);
fclose($fop);
}


Ну как то так..

Спустя 57 минут, 29 секунд (31.07.2012 - 17:33) inpost написал(а):
$var = 10;
формируем псевдо-рандом:
$array(1,2,1,1,1,2,2,2,1,1,1,1,2,2,2,2);
Мы знаем зарание уже то, сколько прибавится.
Далее формируем лишь число через 3 минуты:
10+$array[0]+$array[1]+$array[2]+$array[3];
Всё.

Спустя 35 минут, 49 секунд (31.07.2012 - 18:09) 234you написал(а):
а при помощи такой фигни - нельзя никак? +(time()-1343747251)/300*3

Спустя 1 минута, 33 секунды (31.07.2012 - 18:10) 234you написал(а):
Цитата (DarkLynx @ 31.07.2012 - 17:35)
Цитата (234you @ 31.07.2012 - 13:51)
А если вне крона, как вы говорите... чтоб без рандома прибавлялось число 2. дайте пример пожалуйста

Если без крона, вам нужно будет хранить поболее данных..
А именно, дату последнего обновления числа и число.

Будем хранить дату последнего обновления в UNIX формате.
Сэмулируем дату последнего последнего обновления. При этом на это время наше число равно 120.

$file = file('file.txt');
$lastUpd = $file[0]; // Получили допустим 1223102; Это число совершенно условное и написано хаотичным тыканием по цифрам клавы.
$number = $file[1]; // получили 120;

//Теперь нам надо увеличить число.


$curTime = time(); //Получили текущее время. Например оно получилось равным 1226102
// Проверяем. Дата последнего обновления меньше текущей или нет.
// Если да выполняем код.

if ($lastUpd < $curTime)
{
// Вычисляем разницу во времени
$difTime = $curTime - $lastUpd; // (1226102 - 1223102 = 3000). Это разница во времени. 3000 секунд.
// Считаем кол-во пятиминуток. (Шаг обновления числа) Для наглядности получения кол-ва секунд пишу развернуто, а то всякое бывает.

$stepTime = 5*60;
// Теперь нам надо узнать сколько пятиминуток вход в интервал прошедшего времени.
$count = $difTime / $setTime. // (3000 / 300 = 10). И так прошло 10 пятиминуток.
// Теперь нам нужно прибавить к нашему числу 10 рандомных чисел 1 или 2. Если конечно есть попадает хотя бы одна пятиминутка.

if ($count > 0)
{
for($i=0; $i<$count; $i++)
$number += mt_rand(1,2);
}

//Число получили. Запишем его обратно в файл.
$fop = fopen('file.txt', 'w');
// Для исключения и того малой погрешности, все таки получим текущее время еще раз.
$curTime = time();
//Сформируем строку записи и запишем..
$result = $curTime.'\r\n'.$number;
$fwr = fwrite($fop, $result);
fclose($fop);
}


Ну как то так..

Не знаю куда пихать это... в config.php выдает ошибку на $count
Кидаю в menu.php - тоже выдает ошибку, на неизвестную переменную

Спустя 1 минута, 21 секунда (31.07.2012 - 18:11) DarkLynx написал(а):
Цитата (234you @ 31.07.2012 - 16:09)
а при помощи такой фигни - нельзя никак? +(time()-1343747251)/300*3

Что то я не очень понял, ты о чем? К чему приведенные вычисления?

Спустя 1 минута, 32 секунды (31.07.2012 - 18:13) DarkLynx написал(а):
Цитата (234you @ 31.07.2012 - 16:10)
Цитата (DarkLynx @ 31.07.2012 - 17:35)
Цитата (234you @ 31.07.2012 - 13:51)
А если вне крона, как вы говорите... чтоб без рандома прибавлялось число 2. дайте пример пожалуйста

Если без крона, вам нужно будет хранить поболее данных..
А именно, дату последнего обновления числа и число.

Будем хранить дату последнего обновления в UNIX формате.
Сэмулируем дату последнего последнего обновления. При этом на это время наше число равно 120.

$file = file('file.txt');
$lastUpd = $file[0]; // Получили допустим 1223102; Это число совершенно условное и написано хаотичным тыканием по цифрам клавы.
$number = $file[1]; // получили 120;

//Теперь нам надо увеличить число.


$curTime = time(); //Получили текущее время. Например оно получилось равным 1226102
// Проверяем. Дата последнего обновления меньше текущей или нет.
// Если да выполняем код.

if ($lastUpd < $curTime)
{
// Вычисляем разницу во времени
$difTime = $curTime - $lastUpd; // (1226102 - 1223102 = 3000). Это разница во времени. 3000 секунд.
// Считаем кол-во пятиминуток. (Шаг обновления числа) Для наглядности получения кол-ва секунд пишу развернуто, а то всякое бывает.

$stepTime = 5*60;
// Теперь нам надо узнать сколько пятиминуток вход в интервал прошедшего времени.
$count = $difTime / $setTime. // (3000 / 300 = 10). И так прошло 10 пятиминуток.
// Теперь нам нужно прибавить к нашему числу 10 рандомных чисел 1 или 2. Если конечно есть попадает хотя бы одна пятиминутка.

if ($count > 0)
{
for($i=0; $i<$count; $i++)
$number += mt_rand(1,2);
}

//Число получили. Запишем его обратно в файл.
$fop = fopen('file.txt', 'w');
// Для исключения и того малой погрешности, все таки получим текущее время еще раз.
$curTime = time();
//Сформируем строку записи и запишем..
$result = $curTime.'\r\n'.$number;
$fwr = fwrite($fop, $result);
fclose($fop);
}


Ну как то так..

Не знаю куда пихать это... в config.php выдает ошибку на $count
Кидаю в menu.php - тоже выдает ошибку, на неизвестную переменную

Правильно, я тебе написал сам процесс работы.
Переделывай под себя.
Да и вообще, как можно написать скрипт под твой сайт если ты ни одного когда не привел... ппц..

Спустя 2 минуты, 7 секунд (31.07.2012 - 18:15) 234you написал(а):
Цитата (DarkLynx @ 31.07.2012 - 19:11)
Цитата (234you @ 31.07.2012 - 16:09)
а при помощи такой фигни - нельзя никак? +(time()-1343747251)/300*3

Что то я не очень понял, ты о чем? К чему приведенные вычисления?

Ну если я прописываю это фигню, то оно каждую секунду прибавляет по 0.1
Может можно это переделать, чтоб каждые пять минут прибавляло по 1?

Спустя 2 минуты, 16 секунд (31.07.2012 - 18:17) inpost написал(а):
сколько сейчас времени минус непонятное число, которое делится на ещё одно непонятное число и умножается на 3, тоже непонятно зачем...
вместо 0.1 - 1? 0.1 *10. Надо не за 1 секунду, а за 5 минут - результат / 300.

Спустя 5 минут, 19 секунд (31.07.2012 - 18:23) 234you написал(а):
так я же поделил на 300... когда делю еще - уже получается меньше чем 0.1, но всё-равно каждую секунду

Спустя 1 минута, 9 секунд (31.07.2012 - 18:24) DarkLynx написал(а):
Цитата (234you @ 31.07.2012 - 16:23)
так я же поделил на 300... когда делю еще - уже получается меньше чем 0.1, но всё-равно каждую секунду

Блин, я вот не понимаю, то тебе надо было каждые 5 минут прибавлять рандомное число, теперь каждую секунду статичное... Ты уж определись..

Спустя 6 минут, 19 секунд (31.07.2012 - 18:30) 234you написал(а):
да я просто плохо шарю в программировании. мне написали сайт и тот человек пропал. я сейчас сам меняю, что могу. вот мне и нужно что-то по-проще. за тот вариант, что ты описал - спасибо, но я не догоняю как и уже потом покрылся. Поэтому хочу хотябы сделать через последнюю функцию, что я описал. появилась идея. раз оно каждую секунду набавляет 0.1, то уменьшить это количество до 0.003(3) и округлять это число. тогда как раз до единицы будет округляться каждые 5 минут. только +round(time()-1343747251)/300 не округляет. в чем причина?

Спустя 1 минута, 44 секунды (31.07.2012 - 18:32) 234you написал(а):
+round((time()-1343747251)/300)
заработало вот так.
DarkLynx - не хочешь всё-же мне в скайп написать или оставить свой, чтоб решить вопрос на более высоком уровне. чтоб было с 9 до 11 и рандомно +1 или +2

Спустя 47 минут, 51 секунда (31.07.2012 - 19:20) DarkLynx написал(а):
Цитата (234you @ 31.07.2012 - 16:32)
+round((time()-1343747251)/300)
заработало вот так.
DarkLynx - не хочешь всё-же мне в скайп написать или оставить свой, чтоб решить вопрос на более высоком уровне. чтоб было с 9 до 11 и рандомно +1 или +2

darklynx1291 пиши..

Спустя 31 минута, 29 секунд (31.07.2012 - 19:51) kksw написал(а):
А может лучше заняться продвижением сайта, тогда и количество посетителей или покупок само начнет расти

Спустя 23 минуты, 47 секунд (31.07.2012 - 20:15) inpost написал(а):
Я задачи так и не понял. Всё потому, что непонятно зачем с датами такое творить и каждое обновление страницы выдавать разные числа.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.