1. Go to this page and download the library: Download amphp/amp library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
amphp / amp example snippets
evolt\EventLoop;
$suspension = EventLoop::getSuspension();
EventLoop::delay(5, function () use ($suspension): void {
print '++ Executing callback created by EventLoop::delay()' . PHP_EOL;
$suspension->resume(null);
});
print '++ Suspending to event loop...' . PHP_EOL;
$suspension->suspend();
print '++ Script end' . PHP_EOL;
use function Amp\delay;
int '++ Executing callback passed to async()' . PHP_EOL;
delay(3);
print '++ Finished callback passed to async()' . PHP_EOL;
});
print '++ Suspending to event loop...' . PHP_EOL;
delay(5);
print '++ Script end' . PHP_EOL;
use Amp\Future;
use Amp\Http\Client\HttpClientBuilder;
use Amp\Http\Client\Request;
$httpClient = HttpClientBuilder::buildDefault();
$uris = [
"google" => "https://www.google.com",
"news" => "https://news.google.com",
"bing" => "https://www.bing.com",
"yahoo" => "https://www.yahoo.com",
];
try {
$responses = Future\await(array_map(function ($uri) use ($httpClient) {
return Amp\async(fn () => $httpClient->request(new Request($uri, 'HEAD')));
}, $uris));
foreach ($responses as $key => $response) {
printf(
"%s | HTTP/%s %d %s\n",
$key,
$response->getProtocolVersion(),
$response->getStatus(),
$response->getReason()
);
}
} catch (Exception $e) {
// If any one of the requests fails the combo will fail
echo $e->getMessage(), "\n";
}
final class DeferredFuture
{
public function getFuture(): Future;
public function complete(mixed $value = null);
public function error(Throwable $throwable);
}
// Example async producer using DeferredFuture
use Revolt\EventLoop;
function asyncMultiply(int $x, int $y): Future
{
$deferred = new Amp\DeferredFuture;
// Complete the async result one second from now
EventLoop::delay(1, function () use ($deferred, $x, $y) {
$deferred->complete($x * $y);
});
return $deferred->getFuture();
}
$future = asyncMultiply(6, 7);
$result = $future->await();
var_dump($result); // int(42)
request("...", new Amp\TimeoutCancellation(30));
request("...", new Amp\SignalCancellation(SIGINT));
$deferredCancellation = new Amp\DeferredCancellation();
// Register some custom callback somewhere
onSomeEvent(fn () => $deferredCancellation->cancel());
request("...", $deferredCancellation->getCancellation());
$cancellation ??= new NullCancellationToken();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.