Skip to content

phpgt/Async

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3daab88 · Mar 7, 2025

History

33 Commits
Mar 7, 2025
Nov 22, 2020
Mar 7, 2025
Mar 7, 2025
Nov 11, 2020
Mar 7, 2025
Mar 7, 2025
Mar 7, 2025
Mar 7, 2025
Mar 7, 2025
Mar 7, 2025

Repository files navigation

Promise-based non-blocking operations.

To be able to run asynchronous code in PHP, a loop needs to run in the background to observe and dispatch events, and handle the resolution of promises.

This repository provides the concepts of a Loop, different Timer implementations and a publish-subscribe model for Event objects.


PHP.Gt/Async build status PHP.Gt/Async code quality PHP.Gt/Async code coverage PHP.Gt/Async latest release PHP.Gt/Async documentation

Example usage

A loop with three individual timers at 1 second, 5 seconds and 10 seconds.

$timeAtScriptStart = microtime(true);

$timer = new IndividualTimer();
$timer->addTriggerTime($timeAtScriptStart + 1);
$timer->addTriggerTime($timeAtScriptStart + 5);
$timer->addTriggerTime($timeAtScriptStart + 10);

$timer->addCallback(function() use($timeAtScriptStart) {
	$now = microtime(true);
	$secondsPassed = round($now - $timeAtScriptStart);
	echo "Number of seconds passed: $secondsPassed", PHP_EOL;
});

$loop = new Loop();
$loop->addTimer($timer);
echo "Starting...", PHP_EOL;
$loop->run();