Jump to content

Manuel:RunJobs.php

From mediawiki.org
This page is a translated version of the page Manual:RunJobs.php and the translation is 100% complete.
Depuis MediaWiki 1.40, les scripts de maintenance doivent être appelés directement par 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

Avant MW 1.40
php maintenance/runJobs.php
MW 1.40+
php maintenance/run.php runJobs

Utilisation avancée

Avant MW 1.40
php maintenance/runJobs.php [--conf|--dbpass|--dbuser|--globals|--help|--maxjobs|--maxtime|--memory-limit|--nothrottle|--procs|--quiet|--server|--type|--wait|--wiki]
MW 1.40+
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

Il n'est pas recommandé que "runJobs.php" s'exécute indéfiniement sans aucune limite. L'utilisation de --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

Avant MW 1.40
php maintenance/runJobs.php --maxjobs 5  --memory-limit 150M --type refreshLinks
MW 1.40+
php maintenance/run.php runJobs --maxjobs 5  --memory-limit 150M --type refreshLinks
Avant MW 1.40
/home/flowerwiki/public_html/w/maintenance$ php runJobs.php --maxjobs 5 --memory-limit 150M --type refreshLinks
MW 1.40+
/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.

  1. Créer un autre fichier LocalSettings.php avec le cache d'objets désactivé :
    $wgMainCacheType = CACHE_NONE;
    
  2. Puis exécutez runJobs.php ou run.php runJobs, avec le paramètre --conf pour indiquer l'emplacement du nouveau fichier LocalSettings.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.

Voir aussi