PHP 8.6.0 Beta 3 is available for testing

Yar_Concurrent_Client::loop

(PECL yar >= 1.0.0)

Yar_Concurrent_Client::loopEnvoie tous les appels enregistrés et attend leur réponse

Description

public static function Yar_Concurrent_Client::loop(?callable $callback = null, ?callable $error_callback = null, ?array $options = null): ?bool

Envoie en parallèle tous les appels enregistrés avec Yar_Concurrent_Client::call() et bloque jusqu'à ce que chaque réponse soit arrivée et ait été traitée. La liste des appels est vidée lorsque cette méthode retourne.

Comme les appels s'exécutent simultanément, la boucle ne dure que le temps du seul appel le plus lent, plutôt que la somme de tous les appels. Les callbacks, cependant, ne sont pas invoqués dans l'ordre où les appels ont été enregistrés : un callback se déclenche dès que sa réponse arrive. Pour savoir à quel appel appartient une réponse, comparer l'entrée sequence de l'argument callinfo avec le numéro de séquence retourné par Yar_Concurrent_Client::call(). Le tableau callinfo contient la sequence, l'uri et la method de l'appel ; voir Yar_Concurrent_Client::call().

Liste de paramètres

callback

Un callable utilisé pour traiter les réponses des appels qui ont été enregistrés sans leur propre fonction de rappel. Juste après l'envoi de toutes les requêtes, il est de plus appelé une fois avec deux arguments null, avant l'arrivée de toute réponse.

Si ce paramètre est omis, la valeur de retour d'un appel réussi est simplement affichée lorsque sa réponse arrive.

error_callback

Un callable utilisé pour traiter les erreurs des appels qui ont été enregistrés sans leur propre fonction de rappel d'erreur. Il reçoit trois arguments : le type d'erreur (l'un des codes YAR_ERR_*), le message d'erreur et le tableau callinfo.

Si ce paramètre est omis, un appel échoué émet un avertissement PHP ; contrairement au Yar_Client synchrone, aucune exception n'est levée.

options

Un tableau d'options du client, indexé par les constantes YAR_OPT_*, appliqué à chaque appel enregistré qui ne les redéfinit pas.

Valeurs de retour

Retourne true lorsque chaque appel enregistré a été traité, ou lorsque aucun appel n'a été enregistré du tout. Retourne false si le client concurrent est déjà en cours d'exécution dans une autre boucle ; dans ce cas, une alerte est émise.

Exemples

Exemple #1 Exemple avec Yar_Concurrent_Client::loop()

<?php
function callback($retval, $callinfo) {
    if ($callinfo == NULL) {
        echo "Maintenant, toutes les requêtes ont été émises, et aucune réponse n'est disponible\n";
    } else {
        echo "Ceci est une réponse à un appel distant, le nom de la méthode est ", $callinfo["method"],
             ". La séquence d'appel est ", $callinfo["sequence"], "\n";
        var_dump($retval);
    }
}

function error_callback($type, $error, $callinfo) {
    error_log($error);
}

Yar_Concurrent_Client::call("http://api.example.com/operator.php", "some_method", array("parameters"), "callback");

/* si la fonction de rappel n'est pas spécifiée, celle de loop() sera utilisée */
Yar_Concurrent_Client::call("http://api.example.com/operator.php", "some_method", array("parameters"));

Yar_Concurrent_Client::loop("callback", "error_callback");
?>

Résultat de l'exemple ci-dessus est similaire à :

Maintenant, toutes les requêtes ont été émises, et aucune réponse n'est disponible
Ceci est une réponse à un appel distant, le nom de la méthode est some_method. La séquence d'appel est 2
string(11) "some_method"
Ceci est une réponse à un appel distant, le nom de la méthode est some_method. La séquence d'appel est 1
string(11) "some_method"

Voir aussi

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top