Используйте php для установки заданий cron в Windows
Я ищу способ установить работу cron с помощью PHP. Все, что я хотел бы сделать, это запустить скрипт PHP в определенное время. Пользователь сначала вводит время в сценарии в соответствии с указанным временем, когда сервер запустит сценарий. Я использую Windows 7 и XAMPP.
То, что я нашел, это:
Создайте php-файл, который вызывает файл cron.php. Используя блокнот (или любой другой), вставьте в новый файл следующее: $data = file("http://pearl.supplychain.com/cron.php"); вам нужно будет поместить его в обычные теги php с надписью "меньше знака"? PHP на фронте, а? "Больше, чем знак" в конце. (Кажется, я не могу просто напечатать это, потому что это "подозрительный контент", а drupal это не позволяет) Сохраните его как executetecron.php, в том же каталоге, что и cron.php (htdocs).
Установите запланированное задание, которое регулярно вызывает это:
- Откройте Пуск - Все программы - Стандартные - Системные инструменты - Запланированные задания.
- Дважды щелкните по запланированным задачам.
Установите ежедневное задание, которое начинается в 12:00 и выполняется каждые полчаса (или что-то еще) до 23:59. Скажите заданию "выполнить" следующее:
C:\cms\xampp\php\php.exe c:\cms\xampp\htdocs\executecron.php
(В этой системе php.exe установлен в C:\cms\xampp\php, но вам, вероятно, придется изменить путь).
Как видите, для этого нужно Open Start–All Programs–Accessories–System tools–Scheduled tasks.
Это может быть определено по php-коду или другим способом? Потому что я хочу, чтобы вся работа выполнялась на php / server вместо того, чтобы мой пользователь сам конфигурировал работу cron. Что означает, что я хочу, чтобы мой php-код мог установить cron на сервере, и сервер будет смотреть на cron?
Стефгосселин:
Создать пакетный файл
Open Notepad. Paste the line "C:\xampp\php\php.exe C:\wamp\www\index.php" Click "File" -> "Save As" Ensure "Save as type:" is set to "All Files" Save the file as "cron.bat" to your C drive
Чтобы запланировать запуск командного файла
Open Command Prompt Paste the following "schtasks /create /sc minute /mo 20 /tn "PHP Cron Job" /tr C:\cron.bat" Press Enter This will make the script run every 20 minutes, the first time 20 minutes from now.
Я могу создать файл ванны с помощью PHP, однако, есть ли способ Paste the following "schtasks /create /sc minute /mo 20 /tn "PHP Cron Job" /tr C:\cron.bat
используя php вместо os? Спасибо
Спасибо
6 ответов
Я нашел свой ответ на этот вопрос на waytocode.com
Они предоставляют 3 возможных решения для запуска заданий cron в Windows:
Решение-1 с использованием планировщика заданий
В вашей Windows 7/ Windows 2005/2008.
Зайдите в Пуск меню-> Все программы-> Стандартные-> Системные инструменты-> Планировщик задач-> Создать задачу
В новом окне:
Общие (Дайте имя Задаче, и для тестирования вы можете выбрать "Запускать, когда пользователь вошел в систему")
Триггер (Вы можете выбрать рабочий интервал как "ежедневно, еженедельно, ежемесячно".)
Действие (Это самая важная часть. Выберите Firefox Mozilla в качестве "программы / скрипта" и в Аргументе укажите URL для запуска с Firefox Mozilla).
Решение-2 с использованием планировщика задач и PHP с вашего сервера XAMPP
В Windows Xp не нужно ничего копировать или устанавливать (на сервере уже установлен PHP, например, XAMPP)
Перейти к планировщику заданий
Создайте задание с указанием времени выполнения, затем в настройке avanced в текстовом поле команды "RUN"
C:\xampp\php\php.exe -f c:/xampp/htdocs/waytocode/mycron.php
В Windows 7/ сервер 2005/2008
Нет необходимости копировать или устанавливать что-либо (на сервере уже установлен PHP)
Создайте задачу и задайте время выполнения в настройках триггера. Затем в параметре "Действие настройки" в текстовом поле команды "Программа / скрипт"
C:\xampp\php\php.exe
и в типе "Добавить аргументы (необязательно)"
-f c:/xampp/htdocs/mycron.php
Решение –3 установить exe-файл Windows, который будет имитировать задание cron из системы *nix
Я не люблю устанавливать какой-либо exe-файл на свои серверы или компьютер для разработки, но я предоставлю решение, как они написали:
В Windows Xp скопируйте все 2 DLL-файла с помощью wget.exe в папку C:\windows
Создайте задание, задайте время выполнения, затем в настройке avanced в текстовом поле команды "RUN"
C:\Windows\wget.exe -q -O NUL http://localhost/mycron.php
В Windows 7/server 2005/2008 скопируйте все 2 DLL-файла с помощью wget.exe в папку C:\windows
Создайте задание, дайте Время выполнения, затем в настройке avanced в текстовом поле команды "Программа / Скрипт".
C:\Windows\wget.exe
и в типе "Добавить аргументы (необязательно)"
-q -O NUL http://localhost/mycron.php
Решение-4 с использованием файла.bat и планировщика задач
Я нашел его здесь, в Stackru, и он похож на первые 2:
Создайте файл cron.php (код, который вы хотите выполнять через регулярные промежутки времени)
Создайте файл CRON.BAT, скопируйте и вставьте приведенный ниже код в файл
D:\xampp\php\php.exe D:\xampp\htdocs\Application\cron.php
Путь, который я написал, соответствует моим файлам xampp и cron.php, обновите путь к файлам согласно вашей системной директории
- Чтобы запланировать задачу Нажмите Пуск> Все программы> Стандартные> Системные инструменты> Запланированные задачи
Или вы можете перейти непосредственно в Панель управления> Запланированные задачи
Щелкните правой кнопкой мыши в папке New>Schedule Task.
Дайте подходящее название Задаче. В текстовом поле RUN… введите полный путь к файлу CRON.BAT, в моем случае это
D:\xampp\htdocs\Application\CRON.BAT
Установить график работы, вы можете использовать расширенную кнопку, если требуется.
Решение-5
Мне это тоже не нравится, потому что один скрипт не может зависеть от чужого сайта, но в любом случае это решение.
Воспользуйтесь внешним онлайн-сервисом cron.
https://www.google.ca/search?q=cron%20job%20online%20service
Выберите одно решение, которое вам больше подходит. Надеюсь, это кому-нибудь поможет.
ОБНОВИТЬ
Решение-6 (на основе ответов ниже, и работает с CodeIgniter тоже!)
Создайте файл cron.bat, напишите следующую команду и сохраните ее.
@ECHO OFF
c:
cd C:\Program Files\Internet Explorer
START iexplore.exe http://localhost/path/to/cron/job/1
Создайте задачу и задайте время выполнения в настройках триггера. Затем в параметре "Действие настройки" в текстовом поле команды "Программа / скрипт"
C:\xampp\path\htdocs\folder\includes\cron.bat
КОНЕЦ ОБНОВЛЕНИЯ
Отвечая на ваш вопрос:
Это может быть определено по php-коду или другим способом? Потому что я хочу, чтобы вся работа выполнялась на php / server вместо того, чтобы мой пользователь сам конфигурировал работу cron. Что означает, что я хочу, чтобы мой php-код мог установить cron на сервере, и сервер будет смотреть на cron?
Есть и другие способы сделать это:
Использование cron manager из PHP Использование cron manager из PHP
Управление заданиями Cron с помощью PHP http://code.tutsplus.com/tutorials/managing-cron-jobs-with-php-2--net-19428
К сожалению, все решения с PHP требуют типа *nix-сервера и / или cPanel и более или менее сложны в реализации.
Хорошо, если я правильно понял, вы бы хотели, чтобы в системе было создано задание cron, без необходимости создания задачи пользователем.
По сути, это легко сделать в файле.bat (это можно даже вызвать из php). Приложение schtasks может легко автоматизировать создание запланированной задачи. Например:
schtasks /create /tn UNO /tr YOURAPP.EXE /sc HOURLY /mo 2
См. Официальную страницу поддержки MS для получения дополнительной информации об этом отличном приложении.
Другим вариантом, который может быть даже проще для пользователя, является использование установщика. Я сам не создавал столько приложений для Windows, но имел удовольствие поиграть с NSIS, и у этого приложения также есть опции для создания запланированных задач, среди многих других функций, которых слишком много, чтобы перечислять их здесь. Настоятельно рекомендуется, если вам нужен пакет, устанавливаемый пользователем.
Надеюсь, что это помогает, счастливый друг кодирования.
Еще один замечательный инструмент доступен бесплатно на Windows, nncron. Он использует тот же синтаксис, что и cron unix:
Мне легче справиться с этой ужасной штукой:)
Облегченная версия - это та, которую я бы предложил использовать. Полная версия поддерживает скрипты в файлах конфигурации. Это может быть удобно, но как-то слишком убито для нормальной работы cron.
Шаги Создать Cron в Windows:
Шаг 1> Создать.bat файл
1. open notepad.
2. click File -> Save As.
3.Give the file a name i.e. MyBatchFile.bat Underneath the filename box change the file type to All Files. The .bat on the end of the filename will instruct the PC to open it as a batch file.
Шаг 2> В MyBatchFile.bat напишите следующую команду
ECHO OFF
START File Full Path write here like http://www.google.com
Шаг 3> Открыть Пуск - Все программы - Стандартные - Системные инструменты - Запланированные задачи. Нажмите на создать задачу с правой стороны панели. имя: любой триггер: установить время из выпадающего списка и выбрать в день Действие: выбрать.bat файл Нажмите кнопку ОК
Еще один довольно простой подход - powershell, для извлечения содержимого вашего php-файла.
Task-Scheduler, target: Powershell.exe
используйте аргументы:
-Command "(New-Object Net.WebClient).DownloadString('http://myhost/cron/cron.php')"
(Упс, старый пост)
Это полное решение, которое я пробовал для своего собственного проекта для Windows 10.
1) Перейти к " начать " меню и поиск " планировщик задач " и открыть его.
Если вы столкнулись с какой-либо проблемой с разрешениями, откройте его как " запустить от имени системного администратора ". Эта опция находится точно под "открыть".
И все же у вас возникают проблемы с разрешениями, обратитесь к системному администратору.
2) Нажмите " Новая задача " на правой боковой панели, и откроется окно.
3) В этом окне по умолчанию будет выбрана вкладка " Общие ". Дайте подходящее название задаче и, если требуется, дайте краткое описание.
4) Перейдите к " триггерам ", установите здесь частоту запуска и дату и время начала, если требуется, истекает дата и время. И установите все требуемые параметры.
5) Попал во вкладку " Действия ". Это самая важная часть.
В " Программе / скрипте " укажите абсолютный путь к " php.exe".
В поле " Начать в " укажите абсолютный путь к папке, в которой находится предполагаемый файл php для cron.
В поле " Добавить аргументы " напишите имя файла php, который вы хотите запустить при выполнении задания.
В разделе " Добавить аргументы " вы также можете указать аргументы для файлового пространства, разделенные после имени файла php. а если в нем есть текст или специальные символы, заключите его в двойные кавычки.
Если вы предоставите аргументы скриптам, вы получите их в $argv[ 1 ], $argv[ 2 ] и так далее соответственно.
Для более подробной информации посетите: https://medium.com/@shraddha_kulkarni/run-php-cron-in-windows-513fb1aa53a5
Шаги Создание Cron в ОС Windows:
Шаг 1> Создать.bat файл
1. Open notepad.
2. Click File -> Save As.
3. Give the file a name i.e. MyBatchFile.bat Underneath the filename box change the file type to All Files. The .bat on the end of the filename will instruct the PC to open it as a batch file.
Шаг 2> В MyBatchFile.bat напишите следующую команду
ECHO OFF
START File Full Path write here like http://www.google.com
Шаг 3> Открыть Пуск - Все программы - Стандартные - Системные инструменты - Запланированные задачи. Нажмите на создать задачу с правой стороны панели. имя: любой триггер: установить время из выпадающего списка и выбрать в день Действие: выбрать.bat файл Нажмите кнопку ОК