<?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;
 
 |