<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>Send all calls</title> </head> <body><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="yar-concurrent-client.call.html">Yar_Concurrent_Client::call</a></div> <div class="next" style="text-align: right; float: right;"><a href="class.yar-server-exception.html">Yar_Server_Exception</a></div> <div class="up"><a href="class.yar-concurrent-client.html">Yar_Concurrent_Client</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div><hr /><div id="yar-concurrent-client.loop" class="refentry"> <div class="refnamediv"> <h1 class="refname">Yar_Concurrent_Client::loop</h1> <p class="verinfo">(PECL yar >= 1.0.0)</p><p class="refpurpose"><span class="refname">Yar_Concurrent_Client::loop</span> — <span class="dc-title">Send all calls</span></p> </div> <div class="refsect1 description" id="refsect1-yar-concurrent-client.loop-description"> <h3 class="title">Description</h3> <div class="methodsynopsis dc-description"> <span class="modifier">public</span> <span class="modifier">static</span> <span class="type">boolean</span> <span class="methodname"><strong>Yar_Concurrent_Client::loop</strong></span> ([ <span class="methodparam"><span class="type"><a href="language.types.callable.html" class="type callable">callable</a></span> <code class="parameter">$callback</code></span> [, <span class="methodparam"><span class="type"><a href="language.types.callable.html" class="type callable">callable</a></span> <code class="parameter">$error_callback</code></span> ]] )</div> <p class="para rdfs-comment"> Send all registed remote RPC calls. </p> </div> <div class="refsect1 parameters" id="refsect1-yar-concurrent-client.loop-parameters"> <h3 class="title">Parameters</h3> <dl> <dt> <span class="term"><em><code class="parameter">callback</code></em></span> <dd> <p class="para"> If this callback is set, then Yar will call this callback after all calls are sent and before any response return, with a $callinfo NULL. </p> <p class="para"> Then, if user didn't specify callback when registering concurrent call, this callback will be used to handle response, otherwise, the callback specified while registering will be used. </p> </dd> </dt> <dt> <span class="term"><em><code class="parameter">error_callback</code></em></span> <dd> <p class="para"> If this callback is set, then Yar will call this callback while error occurred. </p> </dd> </dt> </dl> </div> <div class="refsect1 returnvalues" id="refsect1-yar-concurrent-client.loop-returnvalues"> <h3 class="title">Return Values</h3> <p class="para"> </p> </div> <div class="refsect1 examples" id="refsect1-yar-concurrent-client.loop-examples"> <h3 class="title">Examples</h3> <div class="example" id="example-5344"> <p><strong>Example #1 <span class="function"><strong>Yar_Concurrent_Client::loop()</strong></span> example</strong></p> <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <span style="color: #0000BB"><?php<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">callback</span><span style="color: #007700">(</span><span style="color: #0000BB">$retval</span><span style="color: #007700">, </span><span style="color: #0000BB">$callinfo</span><span style="color: #007700">) {<br /> if (</span><span style="color: #0000BB">$callinfo </span><span style="color: #007700">== </span><span style="color: #0000BB">NULL</span><span style="color: #007700">) {<br /> echo </span><span style="color: #DD0000">"Now, all requests are sent, and no any response available\n"</span><span style="color: #007700">;<br /> } else {<br /> echo </span><span style="color: #DD0000">"This is a remote call response, the method name is"</span><span style="color: #007700">, </span><span style="color: #0000BB">$callinfo</span><span style="color: #007700">[</span><span style="color: #DD0000">"method"</span><span style="color: #007700">], <br /> </span><span style="color: #DD0000">". calling sequence is " </span><span style="color: #007700">, </span><span style="color: #0000BB">$callinfo</span><span style="color: #007700">[</span><span style="color: #DD0000">"sequence"</span><span style="color: #007700">] , </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /> </span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$retval</span><span style="color: #007700">);<br /> }<br />} <br /><br />function </span><span style="color: #0000BB">error_callback</span><span style="color: #007700">(</span><span style="color: #0000BB">$type</span><span style="color: #007700">, </span><span style="color: #0000BB">$error</span><span style="color: #007700">, </span><span style="color: #0000BB">$callinfo</span><span style="color: #007700">) {<br /> </span><span style="color: #0000BB">error_log</span><span style="color: #007700">(</span><span style="color: #0000BB">$error</span><span style="color: #007700">);<br />}<br /><br /></span><span style="color: #0000BB">Yar_Concurrent_Client</span><span style="color: #007700">::</span><span style="color: #0000BB">call</span><span style="color: #007700">(</span><span style="color: #DD0000">"http://host/api/"</span><span style="color: #007700">, </span><span style="color: #DD0000">"some_method"</span><span style="color: #007700">, array(</span><span style="color: #DD0000">"parameters"</span><span style="color: #007700">), </span><span style="color: #DD0000">"callback"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">Yar_Concurrent_Client</span><span style="color: #007700">::</span><span style="color: #0000BB">call</span><span style="color: #007700">(</span><span style="color: #DD0000">"http://host/api/"</span><span style="color: #007700">, </span><span style="color: #DD0000">"some_method"</span><span style="color: #007700">, array(</span><span style="color: #DD0000">"parameters"</span><span style="color: #007700">)); </span><span style="color: #FF8000">// if the callback is not specificed, <br /> // callback in loop will be used<br /></span><span style="color: #0000BB">Yar_Concurrent_Client</span><span style="color: #007700">::</span><span style="color: #0000BB">call</span><span style="color: #007700">(</span><span style="color: #DD0000">"http://host/api/"</span><span style="color: #007700">, </span><span style="color: #DD0000">"some_method"</span><span style="color: #007700">, array(</span><span style="color: #DD0000">"parameters"</span><span style="color: #007700">), </span><span style="color: #DD0000">"callback"</span><span style="color: #007700">, </span><span style="color: #0000BB">NULL</span><span style="color: #007700">, array(</span><span style="color: #0000BB">YAR_OPT_PACKAGER </span><span style="color: #007700">=> </span><span style="color: #DD0000">"json"</span><span style="color: #007700">));<br /> </span><span style="color: #FF8000">//this server accept json packager<br /></span><span style="color: #0000BB">Yar_Concurrent_Client</span><span style="color: #007700">::</span><span style="color: #0000BB">call</span><span style="color: #007700">(</span><span style="color: #DD0000">"http://host/api/"</span><span style="color: #007700">, </span><span style="color: #DD0000">"some_method"</span><span style="color: #007700">, array(</span><span style="color: #DD0000">"parameters"</span><span style="color: #007700">), </span><span style="color: #DD0000">"callback"</span><span style="color: #007700">, </span><span style="color: #0000BB">NULL</span><span style="color: #007700">, array(</span><span style="color: #0000BB">YAR_OPT_TIMEOUT</span><span style="color: #007700">=></span><span style="color: #0000BB">1</span><span style="color: #007700">));<br /> </span><span style="color: #FF8000">//custom timeout <br /><br /></span><span style="color: #0000BB">Yar_Concurrent_Client</span><span style="color: #007700">::</span><span style="color: #0000BB">loop</span><span style="color: #007700">(</span><span style="color: #DD0000">"callback"</span><span style="color: #007700">, </span><span style="color: #DD0000">"error_callback"</span><span style="color: #007700">); </span><span style="color: #FF8000">//send the requests, <br /> //the error_callback is optional<br /></span><span style="color: #0000BB">?></span> </span> </code></div> </div> <div class="example-contents"><p>The above example will output something similar to:</p></div> <div class="example-contents screen"> <div class="cdata"><pre> Now, all requests are sent, and no any response available This is a remote call response, the method name issome_method. calling sequence is 4 string(11) "some_method" This is a remote call response, the method name issome_method. calling sequence is 1 string(11) "some_method" This is a remote call response, the method name issome_method. calling sequence is 2 string(11) "some_method" This is a remote call response, the method name issome_method. calling sequence is 3 string(11) "some_method" </pre></div> </div> </div> </div> <div class="refsect1 seealso" id="refsect1-yar-concurrent-client.loop-seealso"> <h3 class="title">See Also</h3> <ul class="simplelist"> <li class="member"> <span class="methodname"><a href="yar-concurrent-client.call.html" class="methodname" rel="rdfs-seeAlso">Yar_Concurrent_Client::call()</a> - Register a concurrent call</span></li> <li class="member"> <span class="methodname"><a href="yar-server.construct.html" class="methodname" rel="rdfs-seeAlso">Yar_Server::__construct()</a> - Register a server</span></li> <li class="member"> <span class="methodname"><a href="yar-server.handle.html" class="methodname" rel="rdfs-seeAlso">Yar_Server::handle()</a> - Start RPC Server</span></li> </ul> </div> </div><hr /><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="yar-concurrent-client.call.html">Yar_Concurrent_Client::call</a></div> <div class="next" style="text-align: right; float: right;"><a href="class.yar-server-exception.html">Yar_Server_Exception</a></div> <div class="up"><a href="class.yar-concurrent-client.html">Yar_Concurrent_Client</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div></body></html>