Данная страница содержит неофициальный перевод документации Unreal Engine 4
This is an unofficial website of Unreal Engine 4 documentation

Создание cron задач в windows 7

Столкнулся с проблемой запуска в denwer задачи отложенного и повторяющегося запуска php скрипта. Долгое время искал в инете, и понял, что никакого cron на windows 7 нет, эта программа работает только в среде UNIX.

Однако, как пестрят все форумы есть альтернатива nnCron. На windows 7 она работает достаточно криво. При запуске программа открывается и мгновенно закрывается даже в режиме совместимости. Помог запуск отдельного exe для добавления задачи в папке, куда установилось приложение. Но и тут есть особые сложности. Я нашел информацию только как запустить скрипт через localhost, т.е. должен быть запущен Denwer (добавить ярлык Run денверский в автозагрузку), а ещё синтаксис записи оставляет желать лучшего.

S" http://localhost/mails/start_cron.php" HTTP-GET
IF
S" 123.html" FWRITE
ELSE 2DROP THEN

Я не буду полностью копировать найденную статью, если кому-то нужно, вы можете посмотреть тут http://jawsik.com/myprogsandscripts/kak-sdelat-cron-dlya-denwera.php

И вы знаете, это работало! Файл подключался к базе данных sqlite, проверял наличие новых записей, и если они были, то отправлял их с помощью CURL команд на удаленный сервер. И происходило это каждые пять минут.

Правда иногда почему-то открывался файл скрипта блокнотом. И это окошко приходилось не более 1 раза в несколько дней закрывать. С этим можно было смириться. И я смирялся с этим целый месяц и даже был всему этому несказанно рад. А вот с чем я смириться не смог, так это с окончанием пробного периода nnCron через месяц, о чем меня уведомило всплывающее сообщение.

Короче удалил я эту глюченную программу и не вижу смысла платить за такую кривоту. Есть очевидные минусы и кроме этого: Denwer нужно держать запущенным, да и файл открывается иногда просто так в блокноте. Я начал думать в сторону стандартных решений, а вдруг с помощью планировщика задач все же можно это сделать?

Можно и даже нужно! Никаких nnCron, все делается достаточно просто! Для начала нужно оттестировать выполнение вашего скрипта в консоли.

Нажимаем клавиши WIN + R, пишем cmd - или открываем консоль как нибудь ещё. Прописываем туда путь к php.exe на денвере, у меня это (проверьте пути до всех файлов в статье! У вас может не быть папки WebServers, ищите папку, куда ставили Denwer) "C:\WebServers\usr\local\php5\php.exe" затем пишем через пробел путь к скрипту, у меня это "C:\WebServers\home\localhost\www\index.php", чтобы выглядело это так:
C:\WebServers\usr\local\php5\php.exe C:\WebServers\home\localhost\www\index.php
И нажимаем Enter

Возможно появятся ошибки о том, что не найдены dll. Дело в том, что в php.ini пути прописаны абсолютные, относительно диска Z. Наверно можно было бы запускать просто через диск Z, но я , если честно, хочу удалить из автозагрузки и создание диска Z, чтобы php запускался вообще без вспомогательных программ.

Обычно php.ini расположен там же где и php.exe (у меня это здесь: C:\WebServers\usr\local\php5\php.ini), но чтобы убедиться в этом точно введите C:\WebServers\usr\local\php5\php.exe --ini и вам покажут список подключаемых php.ini файлов.

Находим extension_dir в файле php.ini и ставим
extension_dir = "C:\WebServers\usr\local\php5\ext\"
Самый что ни на есть полный путь. Пробуем снова запустить в консоле команду запуска скрипта через php.exe. Если получилось и все работает нормально, то заходим в панель управления - администрирование - планировщик задач и создаем новую простую задачу. Указываем имя, задаем время (самое частое это каждый день 1 раз, зато затем в свойствах можно указать, чтобы задача повторялась хоть каждые 5 минут после выполнения этой задачи бесконечно)

Путь к программе прописываем также как и в консоле. В параметрах пишем путь к нашему скрипту. Сохраняем и меняем дополнительные опции, если нужно.

Убрал из автозагрузки денвер, удалил nnCron, все работает с минимальными затратами ресурсов, да и после запуска Windows не нужно теперь ждать когда запустится Denwer. Однако, остается небольшой недочет. Теперь, когда выполняется задача, то появляется окно консоли буквально на полсекунды и исчезает. Не то чтобы меня это сильно напрягает, но остаются некоторые шероховатости в этом решении. Опции "скрытая задача" в планировщике не помогли, как и выполнение этой программы от администратора. Думаю, что решу эту проблему, когда мне это надоест.

Прошло всего лишь 8 часов и я не выдержал этих "мельканий": ни фильм не посмотреть, ни поиграть, ни поработать, ни поучиться. Долго мучался с ярлыками, но через ярлыки это сделать не получится. Самое простое решение, которое я нашел была вот эта вот утилитка: http://www.commandline.co.uk/chp/. Скачиваем куда-нибудь в програм файлс и распаковываем. Затем при создании задачи указываем путь к этой программе
D:\chp\chp.exe
а в параметрах указываем все остальное что нужно запустить
C:\WebServers\usr\local\php5\php.exe C:\WebServers\home\localhost\www\index.php
В итоге вообще никакого эффекта незаметно, но скрипт работает каждые 5 минут.

Яндекс.Метрика