[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: календарное увелечение переменной ))
eUop
Здравствуйте. Честно говоря незнаю возможно ли такое, но имеется необходимость в переменной, которая с каждым днем увеличивалась бы на 1. Т.е. что бы каждый новый календарный день происходило прибавление единцы к имеющемуся числу. Если есть простое решение этого вопроса подскажите пожалуйста, если решение не простое, но оно все таки возможно, готов оплатить услуги по его реализации.



Спустя 4 минуты, 47 секунд (23.08.2010 - 13:27) linker написал(а):
Через файл + скриптик в crontab, который будет каждый день запускаться и читать значение из файла, инкрементить и писать обратно. Остальным скриптам брать значение из этого файла.

Спустя 7 минут, 50 секунд (23.08.2010 - 13:35) eUop написал(а):
предлагаю обсудить через почту goor86@yandex.ru

Спустя 1 час, 2 минуты, 43 секунды (23.08.2010 - 14:37) linker написал(а):
Если есть хоть немного знаний, то могу и сюда накидать код.

Спустя 20 минут, 11 секунд (23.08.2010 - 14:58) vasa_c написал(а):
Я думаю если вы попробуете описать зачем оно надо, задача решится намного проще.

Спустя 4 часа, 41 минута, 12 секунд (23.08.2010 - 19:39) eUop написал(а):
знания есть, но их действиельно не много.
а надо оно для постепенного вывода бд, где данная переменная в лимите буде определять число выводимых страниц

Спустя 6 минут, 32 секунды (23.08.2010 - 19:45) vasa_c написал(а):
Т.е. значение вашей переменной в каждый момент времени описывается простой функцией от даты? )

Правильно описанная задача - половина решения.

Спустя 2 минуты, 5 секунд (23.08.2010 - 19:47) eUop написал(а):
ну да.

Спустя 2 часа, 2 минуты, 6 секунд (23.08.2010 - 21:50) linker написал(а):
Скрипт, запускающийся по crontab
1 0 * * * /usr/bin/php <полный путь к скрипту>
<?php
$PathFile = '/temp/value.txt'; // Путь к файлу (абсолютный)
$Value = (file_exists($PathFile)) ? (integer)file_get_contents($PathFile) : 0;
file_put_contents($PathFile, ++ $Value);
?>
В другом скрипте описываем функцию
<?php
function
GetValue()
{
return (file_exists('/temp/value.txt')) ? (integer)file_get_contents('/temp/value.txt') : 1;
}
?>
В остальных своих скриптах, где это необходимо инклудим скрипт с нашей функцией и получаем значение.

Спустя 2 часа, 44 минуты, 28 секунд (24.08.2010 - 00:34) vasa_c написал(а):
linker, не грузите человека не нужным ему хламом, дайте ему подумать.

Спустя 8 часов, 1 минута, 52 секунды (24.08.2010 - 08:36) linker написал(а):
vasa_c
А кто сказал, что это ему не нужно, да еще и хлам?
Цитата
Если есть простое решение этого вопроса подскажите пожалуйста

Решение наипростейшее, потому и подсказано.

Спустя 27 минут, 27 секунд (24.08.2010 - 09:03) vasa_c написал(а):
Цитата
Решение наипростейшее, потому и подсказано.

Решение наиболее черезжопное для данной задачи.

Спустя 16 минут, 40 секунд (24.08.2010 - 09:20) linker написал(а):
vasa_c
Ну да, конечно.

Спустя 1 минута, 16 секунд (24.08.2010 - 09:21) twin написал(а):
Зачем крон?

Спустя 7 минут, 1 секунда (24.08.2010 - 09:28) linker написал(а):
А чтоб не мешать в кучу разные задачи. Инкремент должен происходить раз в сутки, значит нет необходимости совершать лишние телодвижения в остальное время.

Спустя 4 минуты, 48 секунд (24.08.2010 - 09:33) twin написал(а):
В принципе на первый взгляд логично... Но дело в том, что результат запрашивается то все равно каждый раз, при обращении к бд.
И это можно было бы сделать прямо не отходя от кассы, не используя ни крон, ни тем более файлы.

Спустя 6 минут, 46 секунд (24.08.2010 - 09:40) linker написал(а):
twin
Результат, вот именно, причем это значение глобальное и независимое от основного кода. Его не нужно вычислять, его не нужно проверять с датой, инкрементить и прочее. Его нужно просто получить и использовать в LIMIT.
Какой простор открывается, можно в скрипте замутить какие-нибудь хитрые инкременты/декременты по сложным условиям и все это будет работать независимо от основного кода.

Спустя 4 минуты (24.08.2010 - 09:44) dr_Lev написал(а):
$start_date = date('2010-01-01 00:00:00.000'); // дата, с которой начинать отсчет
$now_date = date(); // текущая дата
$counter = ceil(($now_date - $start_date) / (60*60*24)); // разница в днях (ceil - стартует с 1, floor - с 0)

Спустя 6 минут, 51 секунда (24.08.2010 - 09:51) linker написал(а):
Только не date(), а mktime() в первом случае и time() во-втором.

Спустя 1 час, 20 минут, 6 секунд (24.08.2010 - 11:11) eUop написал(а):
linker, спасибо, но для меня это слишком.

мне вот ещё такой вариант подсказали
<?
$t="24.08.2010";
$t=strtotime($t);
$r=time()-$t;
$g=$r/86400;
?>

Спустя 16 минут, 32 секунды (24.08.2010 - 11:27) linker написал(а):
Знаю, мой вариант не шикарный, но имеет преимущество в масштабировании и гибкости. Я, конечно, махнул лишка.
Собственно тоже самое, что и dr_Lev подсказал, с корректировками.
Быстрый ответ:

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