loop是在所有的request请求都返回之后,才执行下一条吧?
而不是发出request之后立刻返回吧?
谢谢
(PECL yar >= 1.0.0)
Yar_Concurrent_Client::loop — Envoi tous les appels
$callback
= ?, callable $error_callback
= ?): boolEnvoi tous les appels distants RPC enregistrés.
callback
Si la fonction de rappel est définie, alors Yar appelera cette fonction de rappel après avoir envoyé tous les appels, et avant le retour des réponses, avec $callinfo vallant NULL.
Alors, si l'utilisateur ne spécifie pas de fonction de rappel lors de l'enregistrement d'appel concurrent, cette fonction de rappel sera utilisée pour gérer les réponses, sinon, la fonction de rappel spécifiée pendant l'enregistrement sera utilisée.
error_callback
Si la fonction de rappel est définie, alors Yar l'appelera lorsqu'une erreur surviendra.
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 pour l'instant 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://host/api/", "some_method", array("parameters"), "callback");
Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters")); // Si la fonction de rappel n'est pas spécifiée
// la fonction de rappel de la boucle sera utilisée
Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_PACKAGER => "json"));
// ce serveur accepte le packager json
Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_TIMEOUT=>1));
//Délai d'attente maximal personnalisé
Yar_Concurrent_Client::loop("callback", "error_callback"); //Envoi les requêtes,
//error_callback est optionnel
?>
Résultat de l'exemple ci-dessus est similaire à :
Maintenant, toutes les requêtes ont été émises, et aucune réponse n'est pour l'instant disponible Ceci est une réponse à un appel distant, le nom de la méthode est some_method. La séquence d'appel est 4 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" 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 3 string(11) "some_method"