Manuel:$wgRunJobsAsync

This page is a translated version of the page Manual:$wgRunJobsAsync and the translation is 100% complete.
Tâches: $wgRunJobsAsync
Contrôle si les tâches liées aux requêtes sont exécutées de manière asynchrone ou synchrone.
Introduit dans la version :1.23.0 (Gerrit change 124470; git #fab01509)
Retiré dans la version :Encore utilisé
Valeurs autorisées :(booléen)
Valeur par défaut :false (1.27.2, 1.28.1, 1.29+) git #1214a7ca
true (versions précédentes)

Quand l'exécution des tâches pendant les requêtes normales des pages est activée (en fixant $wgJobRunRate à un nombre plus grand que 0; par défaut 1), alors cette variable contrôle s'il faut les exécuter d'une manière asynchrone ou pas.

Détails

Lorsque les tâches sont exécutées en mode asynchrone, une connection HTTP interne est ouverte pour gérer cette exécution, et MediaWiki renvoie le contenu de la page immédiatement au client, sans attendre que la tâche soit terminée. Sinon, la tâche est exécutée dans le même processus que celui qui sert à la soumettre et le client doit attendre que cette tâche soit terminée. Lorsque la tâche ne s'exécute pas de manière asynchrone, si une erreur fatale survient pendant son exécution, elle se propage jusqu'au client, et le chargement de la page est aborté.

Même si $wgRunJobsAsync est mis à true, si PHP ne peut pas ouvrir une socket pour faire la requête HTTP interne, il va se replier sur l'exécution de la tâche en mode synchrone.

Les pages n'apparaissent pas dans leurs catégories

Plusieurs utilisateurs rencontrent des problèmes avec les pages absentes des catégories, bien qu'elles leurs soient correctement assignées. Dans la plupart des cas, c'est un problème lié à la file d'attente des tâches. Ce que les utilisateurs observent habituellement comme problème, c'est que les pages n'apparaissent pas (immédiatement) dans leurs catégories. Les raisons peuvent être différentes : il se peut que la file d'attente des tâches soit bloquée ou que, en fonction de la manière dont le wiki fonctionne, la file n'exécute pas suffisamment de tâches pour l'affichage des pages. Dans ce dernier cas les tâches s'accumulent plus souvent qu'elles ne sont exécutées et provoquent le blocage.

Dans ces cas, il faudrait essayer les choses suivantes :

  • Essayer d'exécuter les tâches directement avec runJobs.php .
  • Après cela, utilisez le script de maintenance showJobs.php pour vérifier qu'il ne reste que 0 tâches dans la file d'attente. Si vous trouvez qu'il y a encore des tâches (peu importe si elles sont en file d'attente, demandées ou retardées), alors faite un TRUNCATE sur les tâches de la table de la base de données à l'intérieur de cette dernière. Ceci va supprimer de la base de données, toutes les tâches non lancées. Ceci peut éventuellement supprimer des tâches qui étaient programmées pour s'exécuter dans le futur. Logiquement, ces tâches ne seront plus exécutées puisqu'elles ont été supprimées tout comme les autres tâches.
  • Ensuite, exécutez le script de maintenance refreshLinks.php pour mettre à jour les tables des liens. A partir de ce moment, les pages des catégories contiendront à nouveau correctement les pages associées (tout au moins en l'état actuel de l'assignation des pages dans les catégories).
  • Fixez $wgRunJobsAsync à false et $wgJobRunRate à 2 ou plus. Ceci aide souvent (mais les performances deviennent plus mauvaises).
  • Ensuite faites quelques modifications en ajoutant ou en supprimant des catégories aux pages. Puis contrôlez le contenu de la table job ou utilisez le script de maintenance showJobs.php pour voir si les tâches s'exécutent dorénavant.


Voir aussi