Guide de demande http asynchrone WordPress

Une chose facile avec php est quamp;rsquoil est en série: chaque ligne de code fonctionne séquentiellement. Il samp;rsquoagit également damp;rsquoune restriction lorsque devez créer un programme qui interagit avec plusieurs API ou damp;rsquoautres services, car les requêtes http prennent du temps et peuvent bloquer le rendu de page. Jamp;rsquoai discuté de ce problème dans mon article sur lamp;rsquoutilisation de PHP pour combiner des données à partir de plusieurs paramètres de lamp;rsquoAPI rest. Mon meilleur Conseil est damp;rsquoutiliser le cache ou Javascript pour éviter ce problème. Un avantage de JavaScript est quamp;rsquoil existe de nombreuses façons simples de générer des requêtes http asynchrones, comme lamp;rsquoAPI Easy de jquery ajax.
Bien que PHP puisse être en série, il existe plusieurs façons damp;rsquoexécuter des requêtes http asynchrones dans une application PHP. J’ai déjà écrit des tâches asynchrones dans WordPress. Camp;rsquoest bon pour les cas damp;rsquoutilisation où il est correct damp;rsquoexécuter une tâche après la session en cours. Delicious Brains a un excellent article sur d’autres approches des méthodes PHP asynchrones dans WordPress. Cependant, si avez besoin des résultats de plusieurs requêtes http avant de terminer la session en cours, ces politiques ne fonctionneront pas. Au lieu de cela, il est préférable damp;rsquoenvoyer plusieurs requêtes http en même temps, puis de continuer. Dans je vais examiner comment cela peut être réalisé avec wordpress et fournir quelques ressources pour une utilisation plus poussée de PHP asynchrone.
Dans WordPress 4.5 ou plus tard, les requêtes des bibliothèques PHP sont utilisées pour les requêtes http. Ceci est très transparent, mais lorsque utilisez des fonctions telles que Wp _ Remote get () ou WP Remote Post (), la requête est faite par défaut en utilisant la requête. Par conséquent, nous pouvons utiliser les requêtes individuellement et en toute sécurité dans WordPress. Camp;rsquoest une bibliothèque utile et simple gérée par Ryan McCue. La classe principale requests a une méthode statique pour chaque méthode http.
Par conséquent, nous pouvons utiliser requests:: get () pour les requêtes get et requests:: Post () pour les requêtes post. Voici deux exemples simples. La première à obtenir une page de post d’un site distant via l’api WordPress rest. Un deuxième utilisateur envoie une demande post pour créer un post sur un site distant via l’api WordPress rest:
Nouvelle demande _ Auth Basic ([amp;lsquoadminamp;rsquo, mot de passe amp;lsquo])
],
[2]

[1]
) Camp;rsquoest bien, mais on ne peut rien faire pour des fonctions comme WP _ Remote u * (). En fait, il est préférable de respecter ces normes. Mais cet article se concentre sur les demandes asynchrones.
Je ne l’ai pas encore vu largement utilisé, mais WordPress est capable d’exécuter des requêtes PHP asynchrones sans avoir besoin de dépendances supplémentaires de la version 4.5. La classe requests a une méthode request _ multiple (). Par exemple, pour utiliser lamp;rsquoexemple que jamp;rsquoai commencé, en combinant les messages de lamp;rsquoAPI rest de plusieurs sites, nous pouvons combiner deux requêtes get comme ceci: amp;lsquo https:calderaforms.comwp-jsonwpv2posts «,
« type» = amp;gt « obtenir»
G)
$request _ 2 =
amp;lsquoURLamp;rsquo = amp;gt https:joshpress.netwp-jsonwpv2posts «,
« type» = amp;gt « obtenir»
G)
$Response = Request:: Request _ multiple ([$request 1, $Request 2])
Var requests _ Response $Response
Foreach ($reply to $Reply) {
$Data = []
(IS _ A ($Response, amp;lsquorequests Responseamp;rsquo)
$data [] = json u decode ($Response amp;gt body)
}
} comme pouvez le voir, nous avons passé de nombreux paramètres de requête, URLs et méthodes pour chaque requête. Les deux demandes sont faites en même temps et, une fois remplies, nous pouvons traiter la réponse en dollars. Rappelez que si dites
Camp;rsquoest simple, non? Il y a beaucoup de complexité cachée
Lamp;rsquointérieur de la demande. Volontiers. Camp;rsquoest une bonne chose damp;rsquoéliminer la complexité. Nous pouvons également faire une demande post. Cela peut être utile si devez ajouter des données damp;rsquoun formulaire à plusieurs services (base de données, CRM, fournisseur de listes de diffusion, etc.). Voici un exemple où la même personne est inscrite sur deux listes de chimpanzés: amp;lsquo [protégé par courriel] »
« État» = amp;gt « membres»
G)
$request _ 1 =
amp;lsquoURLamp;rsquo = amp;gt https:us10.api.mailchimp.com3.0lists42members «,
« type» = amp;gt « publication»,
« titre» = amp;gt $titre,
« données» = amp;gt $abonnés
G)
$request _ 2 =
amp;lsquoURLamp;rsquo = amp;gt https:us10.api.mailchimp.com3.0lists4000000members «,
« type» = amp;gt « publication»,
« titre» = amp;gt $titre,
« données» = amp;gt $abonnés
G)
$Response = Request:: Request _ multiple ([$request 1, $Request 2])
Var requests _ Response $Response
Foreach ($reply to $Reply) {
$Data = []
(IS _ A ($Response, amp;lsquorequests Responseamp;rsquo)
$data [] = json u decode ($Response amp;gt body)
}
Y a t il damp;rsquoautres options? Requests est compatible avec php 5.2 et intégré dans WordPress. Il samp;rsquoagit donc de lamp;rsquooption la plus appropriée et il est peu probable quamp;rsquoelle déclenche un conflit. Guzzle prend également en charge les requêtes http asynchrones. avez des besoins plus complexes, guzzle est un bon choix. Cet article samp;rsquoinspire en fait damp;rsquoun problème récent que jamp;rsquoai rencontré en attendant de nombreuses requêtes http série. J’ai corrigé le problème avec les requêtes asynchrones de guzzle, mais j’ai ensuite commencé à chercher « WordPress way».
voulez approfondir le PHP asynchrone, la Bibliothèque reactphp (qui namp;rsquoa rien à voir avec reactjs) peut gérer le http asynchrone, etc. Facebook PHP Fork Hack est construit à partir de PHP asynchrone. Au fur et à mesure que la complexité de lamp;rsquoapplication augmente et que Intégrez des tiers ou vos propres API dans votre application, il devient plus difficile de bloquer les requêtes http. J’espère que cet article sur WordPress asynchrone http sera utile.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

ContactPress Supported By WordPress Plugins