Manual:runJobs.php
Fichier MediaWiki : runJobs.php | |
---|---|
Emplacement : | maintenance/ |
Code source : | master • 1.41.1 • 1.40.3 • 1.39.7 |
Classes : | RunJobs |
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
--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.
- Create another "LocalSettings.php" file with object caching disabled:
$wgMainCacheType = CACHE_NONE;
- Puis exécutez runJobs.php 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.
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.