Manuel:RunJobs.php

From mediawiki.org
This page is a translated version of the page Manual:RunJobs.php and the translation is 75% complete.
Outdated translations are marked like this.

Since MediaWiki 1.40, maintenance scripts should be invoked directly through maintenance/run.php . Invoking maintenance scripts directly will trigger a warning.

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 job 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 lancé accidentellement un script qui a chargé une file d'attente avec un nombre important de jobs non désirés ou inutiles, il est aussi possible de vider complètement la file d'attente en vidant la table job dans votre base de données du 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

Utilisation avancée

php runJobs.php [--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épendants 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

Exemple

php maintenance/runJobs.php --maxjobs 5  --memory-limit 150M --type refreshLinks
/home/flowerwiki/public_html/w/maintenance$ php runJobs.php --maxjobs 5 --memory-limit 150M --type refreshLinks

2010-10-29 13:50:38 refreshLinks Daisies t=501 good
2010-10-29 13:50:38 refreshLinks Magnolias t=501 good
2010-10-29 13:50:39 refreshLinks Heirloom_Roses t=500 good
2010-10-29 13:50:39 refreshLinks Carnations t=501 good
2010-10-29 13:50:40 refreshLinks Tulips t=563 good
Il n'est pas souhaité que "runJobs.php" s'exécute indéfiniement sans aucune limite ($code1, $code2 et / ou $code3). C'est pourquoi on lance en général des exécutions périodiques, en fournissant au moins une restriction positionnée pour empêcher que cette exécution ne dure trop longtemps. Using --maxjobs on its own is insufficient, so it is best paired with --maxtime and/or --memory-limit. Typical usage involves periodic runs with at least one of the restrictions set to prevent it from running too long in one go.

Possible issues

The job queue appears to be stuck

Under certain circumstances, "runJobs.php" may hang indefinitely. Some jobs may fail to get completed, clogging up the queue.

Idéalement, vous devriez trouver la cause du problème car en général il s'agit d'un extension PHP absente dans le php.ini du php exécuté à partir de la ligne de commande. Possible causes include

  • A missing PHP extension in the php.ini of the PHP being run from the command line.
  • A buggy extension.

No standard tools or methods are currently available to let you diagnose the issue.

Object caching

"runJobs.php" may hang if you have object caching enabled. If this happens, there is something you could try, with the caveat below in mind.

  1. Create another "LocalSettings.php" file with object caching disabled:
    $wgMainCacheType = CACHE_NONE;
    
  2. Puis exécutez runJobs.php 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.

Terminate a running process

Sometimes, if you cannot find the problem and the job queue is creating overhead, you may have no other choice than to terminate it, possibly at the expense of deleting jobs you might need. If this is the case and you accept the risk, you can try to clear the job that you think is causing trouble, or clear the entire jobs table.

Note that on some control panels that use cronjob automation, clearing jobs may have no visible effect. The process initiated may still appear to hang even if there are no jobs left to execute.

Using a database administration tool
  • Go to your database administration tool (e.g. phpMyAdmin) and locate the job table.
  • If you're lucky, it may just be an active job that is causing trouble and that needs to be cleared. You can locate it by finding the row that has a hash value in the job_token column.
  • Repeat if necessary. If all else fails, clear the entire jobs table.
Using manageJobs.php

The maintenance script manageJobs.php does not lend you insights but it does let you delete jobs by group.

Voir aussi