Manuel:RunJobs.php
Fichier MediaWiki : runJobs.php | |
---|---|
Emplacement : | maintenance/ |
Code source : | master • 1.42.3 • 1.41.4 • 1.39.10 |
Classes : | RunJobs |
maintenance/run.php
. En appelant directement les scripts de maintenance, on déclenche un avertissement.
Détails
Le fichier runJobs.php est un script de maintenance qui force manuellement la file d'attente des tâches à s'exécuter. En fonctionnement normal, les tâches de la file d'attente sont exécutées comme une fonction de l'interaction d'utilisateur avec le wiki (ordinairement des requêtes Apache) Le taux de tâches par défaut est de 1 pour 1 et peut être changé en ajustant $wgJobRunRate dans le fichier LocalSettings.php . Notez que la limite de la mémoire par défaut pour un job est de 150 MB afin qu'un job défectueux ne prenne pas toute la mémoire du serveur.
Vous désirez peut-être utiliser ce script parce que le trafic sur votre wiki est trop faible pour vider la file d'attente, ou pour supprimer un nombre exceptionnellement grand de tâches. Soyez conscient tout de même que pour beaucoup de configurations de serveur, cela peut rendre votre wiki paresseux ou même sourd jusqu'à l'achèvement du script. Nous vous conseillons d'abord de tester 50 ou 100 tâches pour avoir une idée de la rapidité du script avant de lancer celui-ci sur plusieurs centaines de tâches ou sans paramètre.
Notez aussi que si vous avez exécuté accidentellement un script qui a chargé une file d'attente avec un nombre important de tâches non désirées ou inutiles, il vous est aussi possible de purger complètement la file d'attente en effaçant le contenu de la table job dans la base de données de votre wiki. Assurez vous qu'aucune des tâches de la file d'attente ne soit nécessaire car elles seront toutes définitivement supprimées.
Utilisation
php maintenance/runJobs.php
php maintenance/run.php runJobs
Utilisation avancée
php maintenance/runJobs.php [--conf|--dbpass|--dbuser|--globals|--help|--maxjobs|--maxtime|--memory-limit|--nothrottle|--procs|--quiet|--server|--type|--wait|--wiki]
php maintenance/run.php runJobs [--conf|--dbpass|--dbuser|--globals|--help|--maxjobs|--maxtime|--memory-limit|--nothrottle|--procs|--quiet|--server|--type|--wait|--wiki]
Paramètres de maintenance génériques
Option/paramètre | Description |
---|---|
aucun paramètre | Exécute toutes les tâches présentes dans la file d'attente |
--help (-h) | Affiche ce message d'aide |
--quiet (-q) | Indique s'il faut supprimer la sortie qui n'est pas en erreur |
--conf | Emplacement de LocalSettings.php, si ce n'est pas la valeur par défaut |
--wiki | Pour spécifier l'ID du wiki |
--globals | Produit les variables globales à la fin du traitement, pour le débogage |
--memory-limit | Définit une limite spécifique de mémoire pour le script, max si pas de limite, ou default pour éviter de la modifier |
--server | Protocole et nom du serveur à utiliser dans les URLs, par exemple https://en.wikipedia.org. C'est quelques fois nécessaire quand la détection du nom du serveur échoue dans les scripts en mode ligne de commande. |
Paramètres dépendant du script
Option/paramètre | Description |
---|---|
--dbuser | utilisateur de la base de données pour ce script |
--dbpass | mot de passe à utiliser pour ce script |
Paramètres spécifiques au script
Option/paramètre | Description |
---|---|
--maxjobs | Nombre maximal de tâches à exécuter |
--maxtime | Temps d'horloge maximum autorisé (en secondes) |
--procs | Nombre de processus à utiliser |
--type | Type de tâche à exécuter. Voir $wgJobClasses pour les types possibles de tâche. |
--wait | Attendre de nouvelles tâches plutôt que de sortir |
--nothrottle | Ignorer la configuration qui limite le nombre de tâches |
--result | Mettre à json pour n'imprimer qu'une réponse JSON
|
Use limits
--maxjobs
seul n'est pas suffisant, et il vaut mieux l'appairer avec --maxtime
et (ou) --memory-limit
. L'utilisation habituelle consiste à exécuter périodiquement en fournissant au moins une restriction positionnée pour empêcher que cette exécution ne dure trop longtemps à chaque passe.
Exemple
php maintenance/runJobs.php --maxjobs 5 --memory-limit 150M --type refreshLinks
php maintenance/run.php runJobs --maxjobs 5 --memory-limit 150M --type refreshLinks
/home/flowerwiki/public_html/w/maintenance$ php runJobs.php --maxjobs 5 --memory-limit 150M --type refreshLinks
/home/flowerwiki/public_html/w/maintenance$ php run.php runJobs --maxjobs 5 --memory-limit 150M --type refreshLinks
Lorsque ce script est exécuté, vous pouvez voir un message tel que celui-ci, comprenant les tâches de la file d'attente refreshLinks :
2010-10-29 13:50:38 refreshLinks Daisies STARTING
2010-10-29 13:50:38 refreshLinks Daisies t=501 good
2010-10-29 13:50:38 refreshLinks Magnolias STARTING
2010-10-29 13:50:38 refreshLinks Magnolias t=501 good
2010-10-29 13:50:39 refreshLinks Heirloom_Roses STARTING
2010-10-29 13:50:39 refreshLinks Heirloom_Roses t=500 good
2010-10-29 13:50:39 refreshLinks Carnations STARTING
2010-10-29 13:50:39 refreshLinks Carnations t=501 good
2010-10-29 13:50:40 refreshLinks Tulips STARTING
2010-10-29 13:50:40 refreshLinks Tulips t=563 good
Problèmes éventuels
La file d'attente des tâches semble bloquée
Dans certaines circonstances, runJobs.php peut se bloquer indéfiniment. Certaines tâches n'arrivent pas à se terminer, ce qui gèle la file d'attente.
Comme nous l'avons mentionné ci-dessus, il est préférable d'éviter que cela ne se produise en fournissant les drapeaux nécessaires, mais si vous vous trouvez réellement dans cette situation, vous devriez idéalement trouver la cause du problème. Les causes possibles comprennent
- Une extension PHP manquante dans le php.ini du PHP exécutée à partir de la ligne de commande.
- Une extension avec des bogues.
Actuellement, il n'existe pas d'outils standard ni de méthode qui vous permette de diagnostiquer ce problème.
Mise en cache des objets
runJobs.php peut se bloquer si vous avez activé la mise en cache des objets . Si cela se produit, vous pouvez essayer quelque chose, en tenant compte de la mise en garde ci-dessous.
- Créer un autre fichier LocalSettings.php avec le cache d'objets désactivé :
$wgMainCacheType = CACHE_NONE;
- Puis exécutez
runJobs.php
ourun.php runJobs
, avec le paramètre--conf
pour indiquer l'emplacement du nouveau fichierLocalSettings.php
avec le cache désactivé.
Mais cela n'est pas recommandé car cetaines tâches peuvent purger des objets du cache, qui ne le seront pas car celui-ci des désactivé. Ceci résultera en ce que certaines mises à jour ne seront pas reportées sur le wiki.
Arrêter un processus en cours d'exécution
Parfois, si vous ne trouvez pas le problème et que la file d'attente des tâches crée une surcharge, vous n'avez peut-être pas d'autre choix que de l'avorter, peut-être au détriment de perdre des tâches dont vous aviez besoin. Si c'est le cas et que vous en accepter le risque, vous pouvez essayer d'avorter la tâche que vous soupçonnnez, ou de purger l'ensemble des tâches présentes dans la table.
Notez que sur certains panneaux de contrôle qui utilisent l'automatisation des tâches via le cron, purger les tâches peut ne pas avoir d'effet visible. Le tâche en cause peut sembler encore bloquée même s'il n'y a plus d'autres tâches à exécuter.
- Utilisation d'un outil d'administration de base de données
- Allez sur votre outil d'administration de la base de données (tel que phpMyAdmin) et localisez la table job .
- Si vous avez de la chance, c'est peut-être une tâche active qui cause les problèmes et qui doit être avortée. Vous pouvez le localiser en cherchant la rangée qui possède une valeur de hachage dans la colonne
job_token
. - Répéter si nécessaire. Si tous les else échouent, purgez toute la table des tâches.
- Utiliser manageJobs.php
Le script de maintenance manageJobs.php ne vous donne pas de renseignements mais il vous permet de supprimer les tâches par groupe.