ConFoo 2025

Ejemplos

Ejemplo #1 Ejemplo de servidor de Yar

<?php

/* Se asume que a esta página se puede acceder mediante http://example.com/operator.php */

class Operator {

/**
* Add two operands
* @param interge
* @return interge
*/
public function add($a, $b) {
return
$this->_add($a, $b);
}

/**
* Sub
*/
public function sub($a, $b) {
return
$a - $b;
}

/**
* Mul
*/
public function mul($a, $b) {
return
$a * $b;
}

/**
* Protected methods will not be exposed
* @param interge
* @return interge
*/
protected function _add($a, $b) {
return
$a + $b;
}
}

$servidor = new Yar_Server(new Operator());
$servidor->handle();
?>

Ejemplo #2 Acceder al servidor desde el navegador (petición GET)

El resultado del ejemplo sería algo similar a:

Información del servidor de Yar

Ejemplo #3 Ejemplo de cliente de Yar

<?php
$cliente
= new yar_client("http://example.com/operator.php");

/* llamar directamente */
var_dump($cliente->add(1, 2));

/* llamar mediante el método 'call' */
var_dump($cliente->call("add", array(3, 2)));


/* __add no puede ser llamado */
var_dump($cliente->_add(1, 2));
?>

El resultado del ejemplo sería algo similar a:

int(3)
int(5)
PHP Fatal error:  Uncaught exception 'Yar_Server_Exception' with message 'call to api Operator::_add() failed' in *

Ejemplo #4 Ejemplo de cliente concurrente de Yar

<?php
function callback($ret, $callinfo) {
echo
$callinfo['method'] , " result: ", $ret , "\n";
}

/* registrar las llamadas asíncronas a servicios remotos */
Yar_Concurrent_Client::call("http://example.com/operator.php", "add", array(1, 2), "callback");
Yar_Concurrent_Client::call("http://example.com/operator.php", "sub", array(2, 1), "callback");
Yar_Concurrent_Client::call("http://example.com/operator.php", "mul", array(2, 2), "callback");

/* enviar todas las peticiones y esperar una respuesta */
Yar_Concurrent_Client::loop();
?>

El resultado del ejemplo sería algo similar a:

mul result: 4
sub result: 1
add result: 3
add a note

User Contributed Notes 1 note

up
-2
124960772 at qq dot com
9 years ago
<?php
function callback($ret, $callinfo) {
echo
$callinfo['method'] , " result: ", $ret , "\n";
}

/* 注册一个异步调用 */
Yar_Concurrent_Client::call("http://example.com/operator.php", "add", array(1, 2), "callback");
/* 发送所有注册的调用, 等待返回, 返回后Yar会调用callback回掉函数 */
Yar_Concurrent_Client::loop();
/* 重置call ,否则上面的call会调用*/
Yar_Concurrent_Client::reset();
Yar_Concurrent_Client::call("http://example.com/operator.php", "sub", array(2, 1), "callback");
Yar_Concurrent_Client::loop();

?>
To Top