(PECL yar >= 1.0.0)
Yar_Concurrent_Client::call — Enregistre un appel concurrent
$uri,$method,$parameters = null,$callback = null,$error_callback = null,$options = nullEnregistre un appel RPC distant. La requête n'est pas envoyée immédiatement ; tous les appels enregistrés sont envoyés ensemble par Yar_Concurrent_Client::loop(), et les réponses sont traitées au fur et à mesure de leur arrivée.
Note:
Seules les URI HTTP et HTTPS sont supportées. Les appels concurrents sont envoyés simultanément via l'interface multi-handle de curl, que le transport TCP/socket Unix n'implémente pas.
uri
Adresse du service RPC, commençant par
http:// ou https://.
methodLe nom de la méthode du service distant.
parametersLa liste des arguments passés à la méthode distante.
callback
Un callable invoqué lorsque la réponse à cet appel
arrive, avec deux arguments : la valeur de la réponse, et un
tableau callinfo décrivant l'appel :
sequence — le numéro de séquence retourné
lors de l'enregistrement de l'appeluri — l'adresse du servicemethod — le nom de la méthode distante
S'il est omis, la fonction de rappel
callback de
Yar_Concurrent_Client::loop() est utilisée ;
voir cette méthode pour ce qui se passe quand ni l'un ni l'autre n'est
fourni.
error_callback
Un callable invoqué lorsque cet appel échoue, avec trois
arguments : le type d'erreur (l'un des codes
YAR_ERR_*), le message d'erreur, et l'tableau
callinfo décrit ci-dessus. S'il est omis, la
fonction de rappel error_callback de
Yar_Concurrent_Client::loop() est utilisée ;
voir cette méthode pour ce qui se passe quand ni l'un ni l'autre n'est
fourni.
options
Un tableau d'options du client, indexé par les constantes
YAR_OPT_*, voir
Yar_Client::setOpt(). Appliqué à cet appel
uniquement.
Retourne le numéro de séquence de l'appel enregistré, un ID unique
commençant à 1 qui identifie l'appel. Retourne
false lorsque le client concurrent est déjà à l'intérieur de
Yar_Concurrent_Client::loop() ou lorsque le
maximum de 128 appels enregistrés est atteint ; dans
les deux cas, une alerte est émise. Retourne null si l'URI ou le nom
de la méthode est vide, ou si l'URI n'est pas une adresse HTTP(S), avec
une alerte.
<?php
function callback($retval, $callinfo)
{
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"));
/* Ce serveur accepte le packager JSON */
Yar_Concurrent_Client::call("http://api.example.com/operator.php", "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_PACKAGER => "json"));
/* Délai d'attente maximal personnalisé */
Yar_Concurrent_Client::call("http://api.example.com/operator.php", "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_TIMEOUT => 1000));
/* Les requêtes ne sont pas encore envoyées */