Est-il possible d'utiliser PHP pour créer, modifier et supprimer des tâches crontab?
Je sais comment répertorier les tâches crontab actuelles de l'utilisateur Apache:
$output = shell_exec('crontab -l');
echo $output;
Mais comment ajouter un travail cron avec PHP? 'crontab -e' ouvrirait simplement un éditeur de texte et vous devrez éditer manuellement les entrées avant d'enregistrer le fichier.
Et comment supprimer un travail cron avec PHP? Encore une fois, vous devez le faire manuellement par «crontab -e».
Avec une chaîne de tâche comme celle-ci:
$job = '0 */2 * * * /usr/bin/php5 /home/user1/work.php';
Comment puis-je l'ajouter à la liste des tâches crontab avec PHP?
Réponses:
utilisation de la commande crontab
Alors,
Ce qui précède peut être utilisé à la fois pour créer et modifier / ajouter à condition que l'utilisateur dispose de l'autorisation d'écriture de fichier adéquate.
Pour supprimer des travaux:
Notez également qu'apache s'exécute en tant qu'utilisateur particulier et que ce n'est généralement pas root, ce qui signifie que les tâches cron ne peuvent être modifiées que pour l'utilisateur apache, sauf si le
crontab -u
privilège est accordé à l'utilisateur apache.la source
shell_exec('crontab -l')
ne retournera que la dernière ligne. J'ai utiliséexec('crontab -l', $output)
. Puis implosez le tableau $ output en une chaîne (avec \ n comme colle).system()
,passthru()
,shell_exec()
etexec()
, essayez d' utiliser le panneau de commande qui vient avec l'hébergement, comme cPanel ou Plesk.Nous avons récemment préparé un mini projet (PHP> = 5.3) pour gérer les fichiers cron pour les tâches privées et individuelles. Cet outil connecte et gère les fichiers cron afin que vous puissiez les utiliser, par exemple par projet. Tests unitaires disponibles :-)
Échantillon de la ligne de commande:
Échantillon de l'API:
Gérer des tâches individuelles à partir de l'API:
github: gestionnaire-php-crontab
la source
Vérifier un cronjob
Ajouter un cronjob
Supprimer un crontab
Exemple
la source
crontab -l
\ n'. $ commande. '" | crontab -', $ sortie); est-ce correct. Je ne reçois pas de crontab pour www-data "-": 0: erreurs de mauvaise minute dans le fichier crontab, impossible d'installer.Cela devrait le faire
la source
J'ai essayé la solution ci-dessous
}
crédits à: Classe Crontab pour ajouter, modifier et supprimer des tâches Cron
la source
Vous pouvez essayer de remplacer la
EDITOR
variable d'environnement par quelque chose commeed
qui peut prendre une séquence de commandes d'édition sur l'entrée standard.la source
Dépend de l'endroit où vous stockez votre crontab:
la source
Vous pouvez placer votre fichier dans /etc/cron.d/ au format cron. Ajouter un préfixe unique au nom de fichier Pour répertorier les tâches cron spécifiques au script, il suffit de travailler avec une liste de fichiers avec un préfixe unique. Supprimez le fichier lorsque vous souhaitez désactiver la tâche.
la source
Bien ...
Essayez ceci pour supprimer un travail cron spécifique (testé).
la source
exit;
aprèsheader('Location: ...');
. En outre, cette forme est en fait assez dangereuse, car elle peut ajouter un travail cron pour «détruire» le serveur.Le moyen le plus simple est d'utiliser la commande shell_exec pour exécuter un script bash, en passant les valeurs en paramètres. À partir de là, vous pouvez manipuler les crontabs comme vous le feriez dans tout autre script non interactif, et vous assurer également que vous disposez des autorisations appropriées en utilisant sudo, etc.
Voir ceci, Crontab sans crontab -e , pour plus d'informations.
la source
Au lieu de crontab, vous pouvez également utiliser la file d'attente des tâches du moteur d'application de Google . Il a un quota gratuit généreux, est rapide, évolutif, modifiable.
la source
C'est simple Vous pouvez vous curl pour le faire, assurez-vous que curl est installé sur le serveur:
pour un déclenchement toutes les minutes: * * * * * curl --request POST ' https://glassdoor.com/admin/sendBdayNotification '
minute heure jour mois semaine
Supposons que vous souhaitiez envoyer cette notification à 14 h 15 tous les jours.Vous pouvez modifier POST / GET en fonction de votre API:
15 14 * * * curl --request POST 'url of ur API'
la source