it-roy-ru.com

Используйте php для установки заданий cron в Windows

Я ищу способ установить работу 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?

Стефгосселину:

Создать пакетный файл

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? Спасибо 

Спасибо 

11
Leo Chan

Я нашел свой ответ на этот вопрос на 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

Solution – 3 установить исполняемый файл 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

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. Чтобы запланировать задачуНажмите Пуск> Все программы> Стандартные> Системные инструменты> Запланированные задачи

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

Щелкните правой кнопкой мыши в папкеNew> Schedule Task

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

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

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

Solution-5

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

Воспользуйтесь внешним онлайн-сервисом cron. 

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

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

ОБНОВИТЬ

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

END UPDATE

Отвечая на ваш вопрос:

Это может быть определено по 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 и более или менее сложны в реализации.

36
Adrian P.

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

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

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

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

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

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

2
stefgosselin

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

http://www.nncron.ru/

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

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

2
Pierre

Шаги Создать 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
user2293605

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

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

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

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

0
dognose