Comment faire pour exécuter tâche cron en php
J'ai des fonction php que je wnat pour exécuter toutes les 15 minutes. J'ai trouvé que certaines questions de ce genre:
et dans mon cas je dois utiliser ceci:
*/15 * * * * /usr/local/bin/php -q /path/to/my/file.p
Mais dois-je exécuter cette commande dans le terminal ou le mettre dans mon fichier? Et une fois qu'il est exécuté, peut-il fonctionner tout le temps ou auront une limite de temps?
Merci!
- Modifier la crontab?
- Je suis nouveau à des tâches cron..pouvez-vous m'expliquer, s'il vous plaît?
- Dans les distributions linux, tapez
crontab -e
au terminal pour l'éditer. Il est où vous mettez la ligne.crontab -l
pour visualiser les travaux. - Le
crontab -e
est la commande pour éditer le fichier crontab qui vous ne devez pas modifier directement. Si vous avez cron, il est déjà là.
Vous devez vous connecter pour publier un commentaire.
De PHP n'est pas d'exécuter des tâches cron, votre serveur (ou système d'exploitation) est en train de faire cela. Il y a deux façons de mettre votre tâche cron de travail:
#1
À l'aide de la commande shell
crontab
. La commandecrontab -l
donnera la liste de toutes les tâches cron pour votre utilisateur (le plus souvent il n'en existe pas encore).crontab -e
va ouvrir une fenêtre de l'éditeur où vous pouvez placer dans une vous cron job comme une nouvelle ligne. Enregistrer et votre tâche cron est maintenant en cours d'exécution.crontab -l
à nouveau et vous verrez qu'il listet.crontab -r
pour supprimer tous les cont emplois.Vous pouvez également démarrer une tâche cron à partir d'un fichier. Il suffit de taper
crontab filename
(eg.crontab textfile.txt
)Alternativement, vous pouvez également démarrer à partir de PHP. Il suffit de mettre votre tâche cron dans un fichier et de le lancer via
exec()
comme suit:#2
Si vous avez admin privilégié sur votre système, vous pouvez créer un fichier dans
/etc/cron.d/
(par exemple, appelermy_cronjob
) et de mettre votre cron job là. Dans ce cas, vous voudrez probablement pour l'exécuter en tant qu'utilisateur (et non pas en tant qu'admin, ce serait plutôt la précarité). C'est assez facile à faire, il suffit d'ajouter le nom d'utilisateur comme suit:(Dans ce cas, la tâche ne sera pas listet sous
crontab -l
)Répondre à votre deuxième question: tant Que la tâche cron est listet dans
crontab -l
ou tant que le fichier est assis dans/etc/cron.d
la tâche cron est en cours d'exécution, dans votre cas, toutes les 15 minutes.<?php crontab script.txt
dois-je mettre cela en script.txt fichier? Serait-il exécuter mon fichier script.txt? Et si j'utilisefile_put_contents( 'script.txt', '*/15 * * * * /usr/local/bin/php -q /path/to/my/file.p' ); exec( 'crontab script.txt' );
où dois-je le mettre en header.php fichier ou d'où? Merci!header.php
n'est pas un bon endroit. Créez un nouveau fichier PHP qui vous permettra de l'appeler qu'une seule fois, manuellement (ce qui signifie: tapez l'URL directement dans la barre d'adresse), pour démarrer la tâche cron.file_put_contents
va créer un fichier sur le serveur etexec( 'crontab file' );
ensuite ajouter une tâche cron. À l'aide de<?php crontab script.txt
ne fonctionnera pas.file_put_contents( 'script.php', '*/15 * * * * /usr/local/bin/php -q /script.php' ); exec( 'crontab script.php' );
- être le même fichier - crob travail et mon code php?script.txt
était trompeuse. Tous vous avez besoin est un simple fichier texte qui contient une ligne de texte:*/15 * * * * /usr/local/bin/php -q /script.php
. Pour créer ce fichier de texte avec php, on utilise la fonctionfile_put_contents( 'textfile.txt', '*/15 * * * * /usr/local/bin/php -q /script.php' );
, il va créer le fichier, et déjà mis en ligne vous en avez besoin. Puisexec( 'crontab textfile.txt' );
va utiliser la ligne et de l'ajouter en tant que tâche cron. Ensuite, vous pouvez même supprimertextile.txt
, vous n'avez pas besoin de plus.10 * * * * /usr/bin/php /www/virtual/username/cron.php > /dev/null 2>&1
Il y a deux parties principales:
La première partie est "10 * * * *". C'est là que nous l'annexe de la minuterie.
Le reste de la ligne est la commande qu'il serait courir à partir de la ligne de commande.
La commande elle-même dans cet exemple comporte trois parties:
"/usr/bin/php". Les scripts PHP ne sont généralement pas exécutable par eux-mêmes. Nous avons donc besoin de le lancer à travers l'analyseur PHP.
"/www/virtual/username/cron.php". C'est juste le chemin vers le script.
"> /dev/null 2>,&1". Cette partie est la manipulation de la sortie du script. Plus sur cela plus tard.
Veuillez lire ce tutoriel http://code.tutsplus.com/tutorials/scheduling-tasks-with-cron-jobs--net-8800
crontab -e
puis exécutez ceci dans la console:15 * * * * /usr/bin/php /path/to/my/file.php > /dev/null 2>&1
et puis exécutez ce:crontab -l
. Est ce que le droit? Et dans le script my/file.php s'exécute toutes les 15 minutes?