Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> получить ближайшую дату выполнения задачи Cron, помогите решить задачу 
:(
    Опции темы
savage
Дата 4.5.2008, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 13.8.2003

Репутация: -1
Всего: нет



Господа помогите решить задачу. Пишу функцию, вида: cronNextTimeExe('0 * * * *');
Функция получает строку из crontab, разбирает ее и выдает ближайшее время запуска по указанной строке.
У меня есть ограничения накладываемые на входную строку. Ни каких интервалов все через запятую.
Т.е. строка вида "0 1-3 * * *" должна выглядеть так: "0 1,2,3 * * *"
Первое что я делаю - это разбиваю строку на пробелы получив необходимые числа для минут, часов, дней недели, и т.п.
Дальше... полная путаница из-за того что много различных если. Пока у меня получается получить последнюю дату задачи указанную в строке,   а нужна следующая..... + еще не учтен день недели.
Код

function cronNextTimeExe($str)
{
        $symbol=Array('i','H','w','j','n');
    $cronSet=explode(' ',$str);
    $cronTime=Array();
    $tmpSet=Array();
    for($i=0; $i<sizeof($cronSet); $i++)
    {
        if($cronSet[$i]=='*') $cronTime[$i]=intval(date($symbol[$i]));
        elseif(strstr($cronSet[$i],','))
        {
            $tmpSet=explode(',',$cronSet[$i]);
            $curVal=intval(date($symbol[$i]));
            $cronTime[$i]=intval($tmpSet[0]);
            for($j=0; $j<sizeof($tmpSet); $j++)
            {
                if($curVal<intval($tmpSet[$j]))
                {
                    $cronTime[$i]=intval($tmpSet[$j]);
                    break;
                }
            }
        }
        else $cronTime[$i]=intval($cronSet[$i]);
    }
    return mktime($cronTime[1],$cronTime[0],0,$cronTime[4],$cronTime[3],date('Y'));
}
$time=cronNextTimeExe('0 * * * *');
print $str.'<br />'.$time.'<br />'.date('d.m.Y H:i:s',$time);

Может есть способ попроще - чтоб разобрать подобную строку?
PM MAIL   Вверх
Canarat
Дата 4.5.2008, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 11.3.2008
Где: Каспий

Репутация: 5
Всего: 5



PM MAIL   Вверх
savage
Дата 4.5.2008, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 13.8.2003

Репутация: -1
Всего: нет



Спасибо! smile 

-----------

Нет, поторопился я. Мне пригодился только парсер http://www.phpclasses.org/browse/package/2568.html
Но он тоже считает только последнюю дату выполнения - а надо дату которая будет выполнена

Это сообщение отредактировал(а) savage - 4.5.2008, 19:31
PM MAIL   Вверх
savage
Дата 4.5.2008, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 13.8.2003

Репутация: -1
Всего: нет



Просто смысла в получении даты последнего исполнения - как то особой не видно.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0764 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.