Una guía para solicitudes asíncronas HTTP para WordPress

Una cosa que simplifica el trabajo con PHP es que es una serie: cada línea de código se ejecuta en orden. Esto también es una limitación cuando necesitamos construir un programa que interactúe con más API u otros servicios, ya que las solicitudes HTTP requieren tiempo y pueden bloquear el juego de la página. Discutí este tema en mi artículo sobre la combinación de datos de varios puntos finales API REST usando PHP. El mejor consejo para evitar este problema es usar Cache o JavaScript. Una gran cosa sobre JavaScript es que hay muchas maneras simples de hacer solicitudes HTTP asíncronas, como la API fácil de jquey Ajax.
Aunque PHP puede ser una serie, hay varias formas de realizar solicitudes HTTP asincrónicas en una aplicación PHP. También escribí sobre cargas asíncronas en WordPress. Fue excelente para los casos de uso en los que estaba bien esperar hasta después de la sesión actual para que la tarea se ejecute. Delicious Brains tiene un excelente artículo sobre otros enfoques para ese método de asincronización de PHP en WordPress. Pero si necesita los resultados de las múltiples solicitudes HTTP antes de completar la sesión actual, esas estrategias no funcionarán. En su lugar, haga más solicitudes HTTP simultáneamente y luego continúe es un mejor enfoque. En este artículo, analizaré cómo hacer esto con WordPress y daré algunos recursos para ir más allá con PHP Asincron.
Un vistazo rápido a las solicitudes en WordPress 4.5 o una versión posterior, las solicitudes de la biblioteca PHP se utilizan para las solicitudes HTTP. Esto es bastante transparente, pero cuando se usa funciones como wp_remote_get () o wp_remote_post () de forma predeterminada, las solicitudes se usan para hacer la solicitud. Como resultado, podemos usar las solicitudes de forma segura por nuestra cuenta en WordPress. Es una biblioteca útil y simple que Ryan McCue mantiene. Las solicitudes de clase principal tienen un método estático para cada uno de los métodos HTTP. Entonces podemos usar solicitudes :: get () para geta y solicitudes :: post () para aplicaciones post. Aquí hay dos ejemplos rápidos. El primero recibe una página de publicación desde un sitio remoto a través de la API REST WordPress. El segundo hace una solicitud de publicación para crear una publicación a través de la API REST de WordPress en un sitio remoto: New Solds_auth_basic ([admin ‘,’ contraseña ‘])
] ,,
[
‘Título’ => ‘Good Roy’,
‘Contenido’ => Buen día … ‘
] ); Es genial, pero nada podría hacer con las funciones wp_remote _*(). De hecho, probablemente sea mejor cumplir con estos estándares. Pero el propósito de este artículo es discutir solicitudes asincrónicas.
Se vuelve asincrónico que aún no lo he visto demasiado usado, pero WordPress ha tenido la capacidad de hacer solicitudes asincrónicas de PHP sin dependencias adicionales que comienzan con la versión 4.5. La clase de solicitudes tiene un método request_multiple (). Por ejemplo, para usar el ejemplo que comencé con publicaciones de combinación del resto de varios sitios, podemos combinar dos solicitudes de Geta de la siguiente manera: ‘https://calderaforms.com/wp-json/wp/v2/posts’,
‘Tipo’ => ‘Get’
];
$ request_2 = [
‘Url’ => ‘https://joshpress.net/wp-json/wp/v2/posts’,
‘Tipo’ => ‘Get’
];
$ respuestas = requests :: request_multiple ([$ request_1, $ request_2]);
/** @var requests_esponse $ respuesta*/
Foreach ($ respuesta como $ respuesta) {
$ data = [];
if (is_a ($ respuesta, ‘reequests_response’)) {
$ data [] = json_decode ($ respuesta-> cuerpo);
}
} Como puede ver, hemos transmitido una serie de parámetros de demanda, URL y método para cada uno. Las dos solicitudes se realizan concomitantemente y podemos trabajar con $ respuestas una vez que ambas estén completas. Tenga en cuenta que si me refiero a “completo” por el éxito o fallido. Por lo tanto, en el bucle verifico si el valor devuelto es un objeto requests_esponse. Si fuera un objeto Solicits_Exception si la aplicación falló.
Bastante simple, ¿verdad? Hay mucha complejidad oculta dentro de las solicitudes. Esto es bueno. La abstracción de la complejidad es algo bueno. También podemos hacer solicitudes de publicación. Esto podría ser útil si tiene que agregar datos de un formulario a múltiples servicios de servicios, CRMS, listas de correspondencia, etc. Aquí hay un ejemplo en el que la misma persona se suscribe a dos listas diferentes de MailChimp: <? Php $ Headers = [
"Acepto: aplicación/vnd.api+json",

“Tipo de contenido: aplicación/vnd.api+json”,
// reemplaza con la tecla API real
“Autorización: Apikey 123456789”
];
$ suscriptor = [
’email_address’ => ‘[correo electrónico protegido]’,
‘status’ => ‘suscriptor’
];
$ request_1 = [
‘Url’ => ‘https://us10.api.mailchimp.com/3.0/lists/42/members’,
‘Tipo’ => ‘post’,
‘Encabezados’ => $ encabezados,
‘Date’ => $ suscrito
];
$ request_2 = [
‘Url’ => ‘https://us10.api.mailchimp.com/3.0/lists/4000000/members’,
‘Tipo’ => ‘post’,
‘Encabezados’ => $ encabezados,
‘Date’ => $ suscrito
];
$ respuestas = requests :: request_multiple ([$ request_1, $ request_2]);
/** @var requests_esponse $ respuesta*/
Foreach ($ respuesta como $ respuesta) {
$ data = [];
if (is_a ($ respuesta, ‘reequests_response’)) {
$ data [] = json_decode ($ respuesta-> cuerpo);
}
} ¿Otras opciones? Solicitudes es compatible con PHP 5.2 y está integrado en WordPress. Por lo tanto, es el más compatible y el menor de probabilidad de causar conflictos. Guzzle también tiene soporte para las solicitudes asíncronas HTTP. Si tiene necesidades más complejas, Guzzle es una excelente opción. Este artículo se inspiró en un problema reciente que causé por muchas solicitudes de serie HTTP. Resolví este problema con las solicitudes asíncronas de Guzzle, pero luego busqué “WordPress”. Si realmente desea ingresar a Php Asincron, la biblioteca Reactphp (sin ReactJS) puede administrar HTTP asincron. El truco PHP-Force de Facebook está construido en vista de PHP Asincron. A medida que aumenta la complejidad de su aplicación y cuanto más integre las API, tercero o la suya, en su aplicación, más será un problema bloquear las solicitudes HTTP. Espero que esta introducción a HTTP Asincron con WordPress lo ayude.

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

gkOVSBm5B8SgiXmo

Shopify vs WooCommerce – ¿Cuál es la mejor plataforma?(Comparación)

Shopify vs WooCommerce

Leave a Reply

Your email address will not be published. Required fields are marked *