web-dev-qa-db-fra.com

Délai d'attente sur Admin-Ajax?

J'écris un plugin et utilise admin-ajax . C'est une fonction longue, c'est-à-dire qu'elle se connecte à une API et se charge dans des publications. Cela pourrait prendre 5-10 minutes parfois. On dirait qu'après 1-2 minutes, mon appel AJAX obtient une réponse d'erreur "502 (passerelle incorrecte)", et le travail du côté PHP s'arrête à ce moment précis.

  1. Y a-t-il un délai d'attente pour ce que vous pouvez faire avec admin-ajax?
  2. Existe-t-il un meilleur moyen de faire des activités "longues" dans un plugin autre que admin-ajax?

Merci!

2
GavinR

Il y a toujours un délai, que ce soit TCP ou le temps d'exécution PHP (à moins que vous ne configuriez votre serveur de façon étrange, PHP tuerait les longues tâches).

Si vous devez faire beaucoup de travail, vous devriez:

Le casser en petits morceaux

Les plugins tels que les vignettes de régénération récupèrent une liste d’articles sur lesquels travailler, puis parcourent la liste par petits lots rapides en gardant une trace de ce qui a été fait au fur et à mesure. Vous pouvez faire 10 minutes de travail, mais au lieu de 1 million de choses dans une demande, il est préférable de faire 1 chose sur 1 million de demandes.

WP CLI

Un travail long et coûteux ne devrait pas être fait sur le front-end. Cela devrait être fait en ligne de commande. Ceci est la meilleure méthode et recommandé .

Implémentez une commande CLI WP qui fait ce que vous devez faire et exécutez-la. Cela contourne complètement le délai d’exécution de PHP, ainsi que tous les délais de connexion éventuels. WP Les commandes CLI peuvent s'exécuter pendant des heures si votre code dispose de suffisamment de ressources système et se nettoie après lui-même pour éviter les fuites de mémoire. Si vous devez transmettre des données, utilisez des paramètres.

si vous n'avez pas accès à l'interface de ligne de commande, vous utilisez un service d'hôte géré ou un service d'hébergement partagé. Dans ce cas, vous devez soit déplacer l'hôte (l'hébergement partagé est problématique), soit télécharger le site sur votre ordinateur local et l'exécuter. la commande CLI localement, puis téléchargez les résultats

4
Tom J Nowell