| 
<?php
 
 namespace bin;
 
 
 include __DIR__ . '/../vendor/autoload.php';
 
 use Async\AsyncCall;
 
 $s = microtime(true);
 
 
 AsyncCall::run(
 function () {
 sleep(2);
 // there is no callback so echo will not be showed
 echo 'sleep 2s' . PHP_EOL;
 }
 );
 
 AsyncCall::run(
 function () {
 sleep(1);
 // echo will be catched in child process and returned as echo in parent process ( but empty callback MUST be set )
 echo 'sleep 1s' . PHP_EOL;
 },
 function () { }
 );
 
 AsyncCall::run(
 function () {
 throw new \Exception('bar');
 }
 );
 
 AsyncCall::run(
 function () {
 throw new \Exception('foo');
 },
 function () {},
 function (\Exception $error) { assert($error->getMessage() === 'foo'); }
 );
 
 
 AsyncCall::run(
 function () {
 // if this is in parent, child will not see this
 function getPage($url)
 {
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 $output = curl_exec($ch);
 curl_close($ch);
 
 return $output;
 }
 
 return getPage('example.com');
 },
 function ($results) {
 echo $results;
 }
 );
 
 
 echo PHP_EOL;
 echo microtime(true) - $s;
 echo PHP_EOL;
 |