Используйте php для установки заданий cron в Windows - PullRequest
11 голосов
/ 27 марта 2012

Я ищу способ установить работу cron с помощью PHP.Все, что я хотел бы сделать, это запустить скрипт PHP в определенное время.Пользователь сначала вводит время в сценарии, в соответствии с указанным временем, на котором сервер будет запускать сценарий.Я использую windows 7 и xampp.

То, что я нашел:

  1. Создайте php-файл, который вызывает файл cron.php: Использование блокнота (или любого другого)вставьте в новый файл следующее: $ data = file («http://pearl.supplychain.com/cron.php”); вам нужно поместить его в обычные теги php, с« меньше чем знак »? php спереди, а?» больше чемзнак »в конце (кажется, я не могу просто напечатать это, потому что это« подозрительный контент », а drupal не разрешает его) Сохраните его как executetecron.php, в том же каталоге, что и cron.php (htdocs).

  2. Установите запланированное задание, которое будет вызывать его регулярно:

    1. Открыть Пуск - Все программы - Стандартные - Системные инструменты - Запланированные задания.
    2. Дважды щелкните по запланированным задачам.
    3. Настройте ежедневную задачу, которая запускается в 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?

To stefgosselin:

Чтобы создать командный файл

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 вместо использования ОС?Спасибо

Спасибо

Ответы [ 6 ]

37 голосов
/ 01 апреля 2014

Я нашел ответ на этот вопрос на waytocode.com

Они предоставляют 3 возможных решения для запуска заданий cron в Windows:

Solution-1 с использованием планировщика заданий

В вашей Windows 7 / Windows 2005/2008.

Зайдите в Пуск меню-> Все программы-> Стандартные-> Системные инструменты-> Планировщик задач-> Создать задачу

В новом окне:

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

  2. Триггер (Вы можете выбрать рабочий интервал как «ежедневно, еженедельно, ежемесячно».)

  3. Действие (Это самая важная часть. Выберите Firefox Mozilla в качестве «программы / скрипта» и в Аргументе укажите URL для запуска с Firefox Mozilla).

Solution-2 с использованием планировщика задач и PHP с вашего сервера XAMPP

В Windows Xp не нужно ничего копировать или устанавливать (PHP уже установлен на сервере, как XAMPP)

Перейти к планировщику заданий

Создайте задание с указанием времени выполнения, затем в настройке avanced в текстовом поле команды «RUN» введите

C:\xampp\php\php.exe -f c:/xampp/htdocs/waytocode/mycron.php

В Windows 7 / server 2005/2008

Нет необходимости копировать или устанавливать что-либо (на сервере уже установлен PHP)

Создайте задание с указанием времени выполнения в настройках триггера. Затем в параметре настройки действий в текстовом поле команды «Программа / скрипт» введите

C:\xampp\php\php.exe

и в типе «Добавить аргументы (необязательно)»

-f c:/xampp/htdocs/mycron.php

Решение – 3 установить exe-файл Windows, который будет имитировать задание cron из * nix system

Мне не нравится устанавливать какой-либо 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

Solution-4 с использованием файла .bat и планировщика задач

Я нашел его здесь, в Stackoverflow, и он похож на первые 2:

  1. Создайте файл cron.php (код, который вы хотите выполнять через регулярные промежутки времени)

  2. Создайте файл CRON.BAT, скопируйте и вставьте указанный ниже код в файл

    D: \ xampp \ php \ php.exe D: \ xampp \ htdocs \ Application \ cron.php

Путь, который я написал, соответствует моим файлам xampp и cron.php, обновите путь к файлам согласно вашей системной директории

  1. Чтобы запланировать задачу Нажмите Пуск> Все программы> Стандартные> Системные инструменты> Запланированные задачи

Или вы можете пойти прямо Панель управления> Запланированные задачи

Щелкните правой кнопкой мыши в папке Создать> Расписание задачи

Дайте подходящее имя Задаче. В текстовом поле RUN… введите полный путь к файлу CRON.BAT в моем случае это

D:\xampp\htdocs\Application\CRON.BAT

Установите расписание работы, при необходимости вы можете использовать расширенную кнопку.

Solution-5

Мне это тоже не нравится, потому что один скрипт не может зависеть от чужого сайта, но в любом случае это решение.

Воспользуйтесь внешней онлайн-службой cron.

https://www.google.ca/search?q=cron+job+online+service

Выберите одно решение, которое вам больше подходит. Надеюсь, это кому-нибудь поможет.

UPDATE

Solution-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, и они более или менее сложны в реализации.

2 голосов
/ 01 апреля 2012

Еще один замечательный инструмент доступен бесплатно на Windows, nncron. Он использует тот же синтаксис, что и cron unix:

http://www.nncron.ru/

Мне легче справиться с этой ужасной штукой :):

Я бы предложил использовать облегченную версию. Полная версия поддерживает скрипты в файлах конфигурации. Это может быть удобно, но каким-то образом убито для нормальной работы cron.

2 голосов
/ 27 марта 2012

Хорошо, если я правильно понял, вы хотели бы, чтобы в системе было создано задание cron, без необходимости создания задачи пользователем.

По сути, это легко сделать в файле .bat (который можно даже вызвать из php). Приложение schtasks может легко автоматизировать создание запланированной задачи. Например:

schtasks /create /tn UNO /tr YOURAPP.EXE /sc HOURLY /mo 2

См. официальную страницу поддержки MS для получения дополнительной информации об этом изящном приложении.

Другим вариантом, который может быть даже проще для пользователя, является использование установщика. Я сам не создавал такого количества приложений для Windows, но имел удовольствие поиграть с NSIS , и у этого приложения также есть опции для создания запланированных задач, среди многих других функций, которых слишком много, чтобы называть их здесь. Настоятельно рекомендуется, если вам нужен пакет, устанавливаемый пользователем.

Надеюсь, это поможет, счастливый кодирующий друг.

0 голосов
/ 22 ноября 2016

Другой довольно простой подход - powershell, для извлечения содержимого вашего php-файла.

Task-Scheduler, target: Powershell.exe, использовать аргументы:

-Command "(New-Object Net.WebClient).DownloadString('http://myhost/cron/cron.php')"

(Упс, старый пост)

0 голосов
/ 10 июня 2014

Шаги Создание 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 файл Нажмите кнопку ОК

0 голосов
/ 05 сентября 2013

Шаги Создать 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> IN MyBatchFile.bat написать следующую команду

    ECHO OFF
    START File Full Path write here like http://www.google.com

Шаг 3> Открыть Пуск - Все программы - Стандартные - Системные инструменты - Запланированные задачи.Нажмите на создать задачу с правой стороны панели.имя: любой триггер: установить время из выпадающего списка и выбрать в день Действие: выбрать .bat файл Нажмите кнопку ОК

...