Запустить запланированную задачу из скрипта

На сервере Windows у нас есть задача, которая запускается время от времени, используя «Запланированные задачи» для управления ею. (лучше не запускать его напрямую, поскольку может потребоваться запускать его от имени конкретного пользователя, а в конфигурации запланированной задачи есть все соответствующие пароли).

Мы хотели бы управлять этим с помощью сценария PHP, чтобы посетители веб-сайта могли запросить выполнение задачи. Может ли PHP запускать запланированную задачу? Включая выдачу ошибки или бездействие, если задача уже выполняется.

Примечание: файлы блокировки и т. Д., Вероятно, не является полезным решением, так как задача может завершиться сбоем / сбой до завершения


person OJW    schedule 02.11.2009    source источник


Ответы (2)


Простой способ: позвольте вашей задаче работать все время, но ничего не делать, пока она не найдет какой-то конкретный файл, затем удалите его и выполните свою работу (затем вернитесь, чтобы подождать).

Ваш PHP (или любой другой) скрипт просто должен создать этот файл ...

person siukurnin    schedule 02.11.2009
comment
конечно, в цикле while(true) должен быть где-то есть оператор Sleep, чтобы он ждал перед следующей проверкой файла. - person Agent_9191; 02.11.2009
comment
хороший ответ, хотя, если задача вылетела, нужно что-то перезапустить. Что возвращается к следующему: как то, что перезапускает, узнает, выполняется ли задача? - person OJW; 02.11.2009

Если у вас есть контроль над средой PHP, вы можете напрямую запускать внешнее приложение в PHP, используя shell_exec и с дополнительными параметрами. Также вы можете использовать мьютексные проверки в связанной задаче, чтобы предотвратить многократное выполнение.

person whoi    schedule 02.11.2009
comment
(a) как это позволяет работать с другим именем пользователя, используя конфигурацию Windows другого пользователя (b) как это проверяет, запущена ли уже задача? - person OJW; 02.11.2009