Задание крона игнорирует часть триггерного URL

Я создал задание крона для инициирования URL во времена набора, который в свою очередь запускает сценарий импорта продукта. Но по некоторым причинам часть триггерного URL с параметрами снята.

Я установил задание крона как это:

/usr/bin/wget -O /dev/null http://domain.nl/wp-cron.php?import_key=XXXXXXXXXX&import_id=3&action=processing

Но это только работает http://domain.nl/wp-cron.php?import_key=XXXXXXXXXX. Где последняя часть, которая на самом деле говорит сценарий, что сделать?

Кто знает, почему это ведет себя как это и как заставить это работать?

2
задан 3 April 2015 в 19:55
2 ответа

Символ амперсанда ( & ) на самом деле что-то означает в Linux (ну, в Bourne-совместимой оболочке). Это означает: выполнить команду как фоновую задачу .

Из-за этого вы фактически говорите cron запустить / usr / bin / wget -O / dev / null http://domain.nl /wp-cron.php?import_key=XXXXXXXXXX в фоновом режиме, а затем выполнить действие = обработка . И это то, что cron делает для вас - то, что вы ему сказали.

Чтобы обойти это, вам нужно избежать символа & , чтобы он обрабатывался как часть URL-адреса, а чем интерпретируется как управляющий символ.

Самое простое решение - заключить URL в кавычки.

4
ответ дан 3 December 2019 в 09:04

Помимо уже упомянутого амперсанда, вы также должны быть осторожны с символом % в записи cron. % в записи cron будет интерпретироваться как разрыв строки и должен быть экранирован обратной косой чертой ( \% ). Убедитесь, что в import_key , который вы подвергали цензуре, нет такого символа. Кроме того, URL-адреса часто содержат % для экранирования определенных символов, таких как пробел (), = и т. Д.

3
ответ дан 3 December 2019 в 09:04

Теги

Похожие вопросы