Код: Выделить всё
var_dump($task['docs'][0], $now);
Код: Выделить всё
var_dump($task['docs'][0], $now);
Код: Выделить всё
Array
(
[0] => Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
[4] => 4
[5] => 5
[6] => 6
[7] => 7
[8] => 8
[9] => 9
[10] => 10
[11] => 11
[12] => 12
[13] => 13
[14] => 14
[15] => 15
[16] => 16
[17] => 17
[18] => 18
[19] => 19
[20] => 20
[21] => 21
[22] => 22
[23] => 23
[24] => 24
[25] => 25
[26] => 26
[27] => 27
[28] => 28
[29] => 29
[30] => 30
[31] => 31
[32] => 32
[33] => 33
[34] => 34
[35] => 35
[36] => 36
[37] => 37
[38] => 38
[39] => 39
[40] => 40
[41] => 41
[42] => 42
[43] => 43
[44] => 44
[45] => 45
[46] => 46
[47] => 47
[48] => 48
[49] => 49
[50] => 50
[51] => 51
[52] => 52
[53] => 53
[54] => 54
[55] => 55
[56] => 56
[57] => 57
[58] => 58
[59] => 59
)
[1] => Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
[4] => 4
[5] => 5
[6] => 6
[7] => 7
[8] => 8
[9] => 9
[10] => 10
[11] => 11
[12] => 12
[13] => 13
[14] => 14
[15] => 15
[16] => 16
[17] => 17
[18] => 18
[19] => 19
[20] => 20
[21] => 21
[22] => 22
[23] => 23
)
[2] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 8
[8] => 9
[9] => 10
[10] => 11
[11] => 12
[12] => 13
[13] => 14
[14] => 15
[15] => 16
[16] => 17
[17] => 18
[18] => 19
[19] => 20
[20] => 21
[21] => 22
[22] => 23
[23] => 24
[24] => 25
[25] => 26
[26] => 27
[27] => 28
[28] => 29
[29] => 30
[30] => 31
)
[3] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 8
[8] => 9
[9] => 10
[10] => 11
[11] => 12
)
[4] => Array
(
[0] => *
)
)
Array
(
[0] => 31
[1] => 14
[2] => 4
[3] => 1
[4] => 3
)
Код: Выделить всё
$dimensions = array(
array(0,59), //Minutes
array(0,23), //Hours
array(1,31), //Days
array(1,12), //Months
array(0,6), //Weekdays
);
foreach ($parameters AS $n => &$repeat) {
//Добавить trim
$repeat = trim($repeat);
Благодарю за помощь.PixoiD писал(а):Нашел где косяк
Код: Выделить всё
class ExampleCommand extends CConsoleCommand{
/**
* Простой пример.
* Запуск каждый час на 10-ой минуте.
*
* @cron 10 * * * *
*/
public function actionexample1(){}
/**
* Пример тегирования.
* Действие будет запущено только если расширение запускается командой содержащий тег "dbserver" или "cacheserver".
* Например так: `./yiic cron run dbserver storageserver`
*
* @cron 10 * * * *
* @cron-tags dbserver cacheserver
*/
public function actionexample2(){}
/**
* Пример перенаправления STDOUT и STDERR в один и тот же файл.
*
* @cron 10 * * * *
* @cron-stdout /tmp/ExampleCommand.log
*/
public function actionexample3(){}
/**
* Пример перенаправления STDOUT и STDERR в разные файлы.
*
* @cron 10 * * * *
* @cron-stdout /tmp/ExampleCommand.log
* @cron-stderr /tmp/ExampleCommandError.log
*/
public function actionexample4(){}
/**
* Пример перенаправления STDERR в файл (STDOUT выводится в файл по умолчанию).
*
* @cron 10 * * * *
* @cron-stderr /dev/null
*/
public function actionexample5(){}
/**
* Пример команды с аргументами.
* Аргументы вводятся точно так же как и при обычном запуске через консоль, с сохранением всех возможностей.
*
* @cron 10 * * * *
* @cron-args --limit=5 --offset=10
*/
public function actionexample6($limit, $offset){}
/**
* Пример расширенного использования времени запуска.
* Действие будет запускаться
* каждую 10, 25, 26, 27, 28, 29, 30, 40 минуту
* каждого 2-го (четного) часа
* с 15 по 21, и с 23 по 27 число
* каждого 2-го (четного) месяца в период с января по июнь включительно
* независимо от дня недели.
*
* @cron 10,25-30,40 *\2 15-21,23-27 1-6\2 *
*/
public function actionexample7(){}
/**
* Все описанные конструкции могут использоваться совместно и в любом порядке.
*
* @cron 10,25-30,40 *\2 15-21,23-27 1-6\2 *
* @cron-stderr /dev/null
* @cron-args --limit=5 --offset=10
* @cron-tags dbserver cacheserver
* @cron-stdout /tmp/ExampleCommand.log
*/
public function actionexample8($limit, $offset){}
}
Код: Выделить всё
/**
* Конфигурация с заменой параметров.
* Примечание: каждая из перечисленных ниже опций может быть динамически определена во время запуска.
* Пример: `./yiic cron run --optionName=optionValue`
*/
return array (
'commandMap' => array(
'cron' => array(
'class' => 'ext.PHPDocCrontab.PHPDocCrontab',
/**
* Префикс тегов при парсинге (по умолчанию cron)
* Изменяя вы можете иные теги-задания, например
* @mycron * * * *
* @mycron-stderr /dev/null
*/
'tagPrefix' => 'mycron',
/**
* Принудительная установка исполняемого файла интерпретатора
*/
'interpreterPath' => '/usr/local/bin/php -d foo=bar',
/**
* Установка папки по умолчанию для сохранения логов.
* Используется если задание указано без @cron-stdout
* По умолчанию application.runtime
*/
'logsDir' => '/var/log/yiiapp/',
/**
* Принудительная установка bootstrap-скрипта.
* По умолчанию используется скрипт с помощью которого запущено само расширение.
*/
'bootstrapScript' => __DIR__.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'yiicMod.php',
/**
* Временная метка в формате поддерживаемом функцией strtotime,
* которая будет использована в качестве текущей при запуске заданий.
*
* Можно использовать для запуска всех необходимых скриптов, если время запуска было пропущено.
* Так же можно использовать как метод коррекции часовых поясов сервера по отношению к приложению.
*/
'timestamp' => 'now - 1 hour 25 minutes'
)
)
);
2) Передача аргументов не работает. Причина использование функции escapeshellarg для всех аргументов сразу [Line: 258]. В PHP документации сказано "использована для того, чтобы экранировать отдельные аргументы"PixoiD писал(а): подебажил и вот после это цикала выходит
Видимо дело, всё-таки не в этом. Во-первых у меня задание отрабатывает, а во-вторых вот работающий код.aoglib писал(а):При тестировании в Windows 7 сразу наткнулся на несколько проблем:
1) Задание времени с числами меньше 10. т.е. если укажу @cron 5 1 * * * (каждый день в пять минут второго) не сработает в 01:05 изза проверки in_array($piece, $task['docs'][0][$key]) 5!='05' и 1!='01' [Line: 253]. Похоже об этой же проблеме говорил PixoiDPixoiD писал(а): подебажил и вот после это цикала выходит
Код: Выделить всё
[host]$ php -r "var_dump(in_array(5, array('05')));"
bool(true)
В репозитории на GitHub есть версия в которой этот баг уже исправлен. К сожалению, я забыл перезалить новую версию в офф. репозиторий.aoglib писал(а): 2) Передача аргументов не работает. Причина использование функции escapeshellarg для всех аргументов сразу [Line: 258]. В PHP документации сказано "использована для того, чтобы экранировать отдельные аргументы"