class TestCommand extends CConsoleCommand {
public function run($args) {
// тут делаем то, что нам нужно
}
}
ВОПРОС 1 - фраза:
// тут делаем то, что нам нужно означает что я должен продублировать код экшена в консольный класс?
т.е. я должен взять свой public function actionParsingUrls() {} тупо переименовать его в public function run (){} и на этом все? Или я не так все понял?
ВОПРОС 2 - фраза:
// файл конфигурации будет отдельный
$configFile='path/to/config/cron.php';
А это обязательно?
И если да, то почему?
Почему я не могу использовать main.php если настройки идентичны?
Или это делается только в том случае если нужен другой конфиг для крона?
Да, нужно поместить код экшена в метод run(), заменив значения из $_POST на соответствующие значения $args.
Конфиг может быть любой. В статье лишь показано, что, как правило, он отличается от основного, и не за чем, к примеру, помещать в него правила url или подключение каких-либо расширений. Конфиг для cron’а обычно гораздо проще, чем main.
За ответ спасибо, но опять вопрос. А зачем в $args передавать значение если я могу просто это прописать сразу в коде? Или тут опять какой то скрытый смысл?
Вот кусок экшена который был:
public function actionParsingUrls() {
ignore_user_abort(true);
set_time_limit(0);
$errors = array();
$pars_page = '';
$i_p = 0;
if (isset($_POST['parsingurls'])) {
$limit_url = $_POST['object_count'];
$type_offer = $_POST['type_offer'];
$urls = Parsing::model()->getParsingUrls($type_offer,$limit_url);
$areases = Areas::model()->getListAreases();
Yii::import('application.vendors.*');
// продолжение кода ...
А вот так как я понял надо делать в классе крона:
class ParsingUrls extends CConsoleCommand {
public function run() {
$limit_url = 5;
$type_offer = 1;
$urls = Parsing::model()->getParsingUrls($type_offer,$limit_url);
$areases = Areas::model()->getListAreases();
Yii::import('application.vendors.*');
// продолжение кода ...
}
Нет никакого скрытого смысла. Можете писать в коде, можете читать из файла, можете выполнять код для всех значений $type_offer от 1 до 1000. Передача параметров из командной строки - лишь один из вариантов.