web-dev-qa-db-fra.com

Utilisez php pour définir les tâches cron dans Windows

Je cherche un moyen de configurer cron job avec PHP. Tout ce que je voudrais faire est d’exécuter un script PHP à un moment précis. L'utilisateur entre d'abord une heure dans un script, en fonction de l'heure spécifiée, le serveur exécutera le script. J'utilise Windows 7 et xampp.

Ce que j'ai trouvé c'est: 

  1. Créez un fichier php qui appelle le fichier cron.php: À l'aide du bloc-notes (ou autre), collez ce qui suit dans un nouveau fichier: $ data = file (“http://pearl.supplychain.com/cron.php”); vous aurez besoin de le mettre dans les balises php ordinaires, avec le signe «moins que»? php à l'avant, et le? «Plus grand que signe» à la fin. (Je ne peux pas sembler taper simplement parce qu’il s’agit d’un «contenu suspect» et que Drupal ne le permet pas) Enregistrez-le sous executecron.php, dans le même répertoire que cron.php (htdocs).

  2. Configurez une tâche planifiée qui l’appelle régulièrement:

    1. Ouvrez Démarrer - Tous les programmes - Accessoires - Outils système - Tâches planifiées.
    2. Double-cliquez sur les tâches planifiées.
    3. Configurez une tâche quotidienne qui commence à minuit et s’effectue toutes les demi-heures (ou autre) jusqu’à 23h59. Indiquez à la tâche de "lancer" les tâches suivantes:

      C:\cms\xampp\php\php.exe c:\cms\xampp\htdocs\executecron.php
      

      (Sur ce système, php.exe est installé dans C:\cms\xampp\php, mais vous devrez probablement changer le chemin).

Comme vous pouvez le constater, pour ce faire, il faut Open Start–All Programs–Accessories–System tools–Scheduled tasks.

Peut-il être spécifique par le code php ou en utilisant un autre moyen de le faire? Parce que je veux tout le travail effectué sur php/server au lieu d’avoir besoin que mon utilisateur configure lui-même le travail cron. Ce qui signifie que je veux que mon code php puisse définir le cron dans le serveur et que le serveur va regarder le cron?

À stefgosselin:

Pour créer le fichier batch

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

Pour planifier l'exécution du fichier de commandes

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.

Je suis capable de créer un fichier bath en utilisant php, cependant, existe-t-il un moyen de Paste the following "schtasks /create /sc minute /mo 20 /tn "PHP Cron Job" /tr C:\cron.bat En utilisant php au lieu d'utiliser os? Je vous remercie 

Je vous remercie 

11
Leo Chan

J'ai trouvé ma réponse à cette question à waytocode.com

Ils offrent 3 solutions possibles pour exécuter des tâches cron sous Windows:

Solution-1 en utilisant le planificateur de tâches

Dans votre Windows 7/Windows 2005/2008.

Allez dans le menu Démarrer-> Tous les programmes-> Accessoires-> Outils système-> Planificateur de tâches-> Créer une tâche

Dans la nouvelle fenêtre:

  1. Général (Donnez le nom de la tâche et pour tester, vous pouvez sélectionner «Exécuter lorsque l'utilisateur est connecté»)

  2. Déclencheur (Vous pouvez sélectionner l’intervalle d’exécution «tous les jours, toutes les semaines».)

  3. Action (C'est la partie la plus importante. Sélectionnez un firefox de Mozilla comme «programme/script» et dans l'argument, indiquez l'URL à utiliser avec Mozilla firefox).

Solution-2 en utilisant le planificateur de tâches et PHP à partir de votre serveur XAMPP

Sous Windows Xp, nul besoin de copier ou d'installer quoi que ce soit (PHP est déjà installé sur le serveur, comme XAMPP)

Aller au planificateur de tâches

Créer une tâche avec l'option Durée d'exécution, puis en configuration avancée dans le type de zone de texte de la commande «Exécuter»

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

Sous Windows 7/serveur 2005/2008

Pas besoin de copier ou d'installer quoi que ce soit (déjà PHP est installé sur le serveur)

Créez une tâche avec le paramètre Durée d'exécution dans le déclencheur. Ensuite, sélectionnez l'option Paramétrage dans l'action dans le type de zone de texte de la commande «Programme/Script».

C:\xampp\php\php.exe

et dans le type “Ajouter des arguments (facultatif)”

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

Solution – 3 installe un fichier exe Windows simulant le travail cron à partir du système * nix

(Je n'aime pas installer de fichier exe sur mes serveurs ou ma machine de développement)

Sous Windows Xp, copiez tous les 2 DLL fichiers avec wget.exe dans le dossier C:\windows.

Créer une tâche avec l'option Temps d'exécution puis en configuration avancée dans le type de zone de texte de la commande «Exécuter»

C:\Windows\wget.exe -q -O NUL http://localhost/mycron.php

Sous Windows 7/server 2005/2008, copiez tous les 2 fichiers DLL avec wget.exe dans le dossier C:\windows

Créer une tâche avec l'option Temps d'exécution puis en configuration avancée dans le type de zone de texte de la commande «Programme/Script»

C:\Windows\wget.exe

et dans le type “Ajouter des arguments (facultatif)”

-q -O NUL http://localhost/mycron.php

Solution-4 à l'aide d'un fichier .bat et du planificateur de tâches

Je l'ai trouvé ici chez Stackoverflow et c'est semblable au premier 2:

  1. Créez un fichier cron.php (le code que vous voulez exécuter à intervalles réguliers)

  2. Créez un fichier CRON.BAT, copiez et collez le code ci-dessous dans le fichier.

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

Le chemin que j'ai écrit est conforme à mes fichiers xampp et cron.php, mettez à jour le chemin des fichiers en fonction de votre répertoire système.

  1. Pour planifier une tâcheCliquez sur Démarrer> Tous les programmes> Accessoires> Outils système> Tâches planifiées.

Ou vous pouvez aller directement Panneau de configuration> Tâches planifiées

Faites un clic droit dans le dossierNouveau> Planifier une tâche

Donnez le nom approprié à la tâche . Dans le champ de texte RUN… Tapez le chemin complet du fichier CRON.BAT dans mon cas, il s'agit de 

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

Définir le calendrier du travail, vous pouvez utiliser le bouton avancé si nécessaire.

Solution-5

Je ne l'aime pas non plus, car un script ne peut pas dépendre du site Web de quelqu'un d'autre, mais c'est quand même une solution.

Utilisez un service de travail Cron en ligne externe. 

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

Choisissez une solution qui vous convienne mieux. J'espère que cela aidera quelqu'un.

METTRE À JOUR

Solution-6 (Basé sur les réponses ci-dessous, et fonctionne également avec CodeIgniter!)

Créez le fichier cron.bat, écrivez la commande suivante et enregistrez-le.

@ECHO OFF
c:
cd C:\Program Files\Internet Explorer
START iexplore.exe http://localhost/path/to/cron/job/1

Créez une tâche avec le paramètre Durée d'exécution dans le déclencheur. Ensuite, sélectionnez l'option Paramétrage dans l'action dans le type de zone de texte de la commande «Programme/Script».

C:\xampp\path\htdocs\folder\includes\cron.bat

FIN MISE À JOUR

Répondre à votre question:

Peut-il être spécifique par le code php ou en utilisant un autre moyen de le faire? Parce que je veux tout le travail effectué sur php/serveur au lieu de besoin de mon utilisateur config le travail cron eux-mêmes. Ce qui signifie que je veux que mon code php puisse définir le Cron dans le serveur et le serveur va regarder le cron?

Il y a d'autres moyens de le faire:

Utilisation de cron manager depuis PHP Utilisation de cron manager depuis PHP

Gestion des tâches cron avec PHP http://code.tutsplus.com/tutorials/managing-cron-jobs-with-php-2--net-19428

Malheureusement, toutes les solutions avec PHP nécessitent un type de serveur * nix et/ou cPanel et sont plus ou moins complexes à mettre en œuvre.

36
Adrian P.

Ok, si j'ai bien compris, vous aimeriez créer un travail cron sur un système, sans que l'utilisateur ait à créer la tâche.

En gros, cela peut facilement être fait dans un fichier .bat (pouvant même être appelé depuis php) . L'application schtasks peut facilement automatiser la création d'une tâche planifiée. Par exemple:

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

Voir la page officielle du support MS pour plus d’informations sur cette application astucieuse.

Une autre option qui peut même être plus facile pour l'utilisateur est d'utiliser un programme d'installation. Je n'ai pas créé beaucoup d'applications Windows, mais j'ai eu le plaisir de jouer avec NSIS , et cette application offre également des options pour créer des tâches planifiées, parmi de nombreuses autres fonctionnalités bien trop nombreuses pour être nommées ici. Fortement recommandé si vous avez besoin d'un paquet installable par l'utilisateur.

J'espère que ça aide, heureux codeur ami.

2
stefgosselin

Un autre excellent outil est disponible gratuitement sur Windows, nncron. Il utilise exactement la même syntaxe que le cron d’unix:

http://www.nncron.ru/

Je trouve plus facile de gérer que ces horribles schtasks :)

La version allégée est celle que je suggérerais d'utiliser. La version complète prend en charge les scripts dans les fichiers de configuration. Cela pourrait être pratique, mais d'une manière ou d'une autre, être mort pour des tâches normales.

2
Pierre

Étapes Créer un Cron dans Windows:

Étape 1> Créer un fichier .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.

Étape 2> IN MyBatchFile.bat, écrivez à la commande suivante

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

Étape 3> Ouvrez Démarrer - Tous les programmes - Accessoires - Outils système - Tâches planifiées . Cliquez sur créer une tâche à partir de la barre de droite . nom: n'importe qui trigger: règle l'heure à partir du menu déroulant et sélectionne par jour Action: sélectionnez le fichier .bat Cliquez sur le bouton OK

0
user2293605

Une autre approche assez simple est Powershell, pour récupérer le contenu de votre fichier php. 

Planificateur de tâches, cible: Powershell.exe, utiliser des arguments: 

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

(Ups, ancien post)

0
dognose