[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос про Цикл
x0ka
Кто может подсказать каким образом реализовать такую штуку..

Нужно чтобы в определённое установленное время
в базу добавлялась новая запись и чтобы это было всё автономно...
Без участия Юзверя... blink.gif

От sergeiss: тема перемещена в "PHP ?"



Спустя 24 минуты, 42 секунды (22.04.2009 - 13:50) sergeiss написал(а):
Цитата (x0ka @ 22.04.2009 - 13:25)
Кто может подсказать каким образом реализовать такую штуку..

Нужно чтобы в определённое установленное время
в базу добавлялась новая запись и чтобы это было всё автономно...
Без участия Юзверя... blink.gif

Тему я переместил в раздел "PHP ?", т.к. она не имеет отношения ни к ПХП, ни к базам данных.

А копать надо в сторону крона (это в линуксе; а в винде - плановые задачи). Там указываешь, когда надо запускать определенную задачу, а уж что она будет делать - это то, что ты укажешь.

Спустя 1 час, 5 минут, 28 секунд (22.04.2009 - 14:55) FatCat написал(а):
Цитата (sergeiss @ 22.04.2009 - 13:50)
копать надо в сторону крона

Я предпочитаю делать на тасках.
Например, делал удаление тем в форуме по расписанию. Никакого крона. При заходе посетителя в форум сверяется время, и если время существования темы истекло - сначала она удаляется, затем уже посетителю отдается список тем форума.
Если не брать в рассчет кодирования интерфейса, сам движок такой операции составил одно дополнительное поле в одной таблице БД и 2 строчки кода: ввод времени в БД и вызов функций удаления по условию.

Спустя 4 минуты, 9 секунд (22.04.2009 - 14:59) sergeiss написал(а):
FatCat - а если надо раз в какое-то время загружать данные, к тому же объемные весьма (т.е. требующие времени)?

У меня вот есть такая задача (успешно реализованная уже давным-давно). Как у автора темы smile.gif Нужно раз в сутки загрузить данные. Загрузка занимает сколько-то минут. Я делаю запуск по планировщику винды, т.к. сервер стоит на винде.

Спустя 34 минуты, 10 секунд (22.04.2009 - 15:34) x0ka написал(а):
sergeiss, а если у меня не сервер, на домен с именем...
или там реально такое устроить?...
вроде это разные вещи... blink.gif

Спустя 42 секунды (22.04.2009 - 15:34) x0ka написал(а):
FatCat, этот вариант я рассматривал но мне хочется сделать именно без участи я пользователя...

Написать скрипт и забыть

Спустя 9 минут, 37 секунд (22.04.2009 - 15:44) FatCat написал(а):
Цитата (sergeiss @ 22.04.2009 - 14:59)
объемные весьма (т.е. требующие времени)?

Это я тоже делаю по крону. Например ежедневный бекап БД, важных файлов форума...
Но запускаю по крону не ПХП-скрипты, а юниксовые команды.
У меня какое-то предубеждение противо запуска пхп без участия человека...


Цитата (x0ka @ 22.04.2009 - 15:34)
Написать скрипт и забыть

Наверное год назад я написал скрипт кеширования главной страницы, работающий в том числе и на этом форуме.
PHP
// Начали проверку файлов для кеширования
        $time_next = Array();
        $cache_dir="cache";
        $open_dir=opendir($cache_dir);
        while($tmp_name=readdir($open_dir))
        {
            if(stristr($tmp_name,".cache.board.tmp"))
                $time_next[] = intval( str_replace(".cache.board.tmp","",$tmp_name) );
        }
        if( count($time_next) == 0 ) // Нет кеша главной
        {
            $time_next = 0;
            $cached_in_file = "recach";
        }
        elseif( count($time_next) > 1 ) // Несколько кешей
        {
            rsort($time_next);
            unlink($ibforums->vars['base_dir'].$cache_dir."/".$time_next[1].".cache.board.tmp");
            $time_next = $time_next[0];
        }
        else // Кеш есть
        {
            $time_next = $time_next[0];
        }
        $time_delim = time() - $time_next;
        
        if
( ($time_delim > 900 or $time_delim < 0) and intval($ibforums->input['f'])<)
        {
            $cached_in_file = "recach";
            if(file_exists($ibforums->vars['base_dir'].$cache_dir."/".$time_next.".cache.board.tmp"))
                unlink($ibforums->vars['base_dir'].$cache_dir."/".$time_next.".cache.board.tmp");
        }
        else
        
{
            $cached_in_file = "cached";
        }
// Закончили проверку файлов
// Работа с кешем:
        if( $cached_in_file == "cached" and intval($ibforums->input['f'])<)
        {
            $stats_html = file_get_contents( $ibforums->vars['base_dir'].$cache_dir."/".$time_next.".cache.board.tmp" );
        }
        else( $cached_in_file == "recach" and intval($ibforums->input['f'])<)
        {
            // Куча запросов к БД, генерация ХТМЛ-кодов статистики, новостей 
            // и прочих элементов, не привязанных к конкретному пользователю
            ignore_user_abort(TRUE);
            $fh = fopen("cache/".time().".cache.board.tmp", "w");
            fwrite($fh, $stats_html);
            fclose($fh);
        }

Написал и забыл, все работает без меня. rolleyes.gif

Спустя 1 день, 16 часов, 49 минут, 23 секунды (24.04.2009 - 08:33) x0ka написал(а):
FatCat, код интересный....
Чтобы более указать проблему опишу поставлю её так:

А вот как сделать так чтобы в определённое время к примеру в полноч
в чат выводилась строка "Полноч советую всем ложиться спать"
Типо в страницу вставить:

PHP
$datatime = date(G:i);
if ( $datatime = "0:00") {
//Действие
};


Так чтоль предлогаете сделать?
Быстрый ответ:

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