There is no license information available for the latest version (v1.1.2) of this package.

Background script execution with cross-platform compatible streaming.





Fund package maintenance!

v1.1.2 2021-02-02 17:33 UTC

This package is auto-updated.

Last update: 2022-01-15 20:23:54 UTC


Execute background processes asynchronously using an object oriented process pool.

Build status Code quality Code coverage Current version PHP.G/Daemon documentation

Example usage

use Gt\Daemon\Process;
use Gt\Daemon\Pool;

// Create three long-running processes:
$pingProcess = new Process("ping");
$infiniteProcess = new Process("while true; do echo 'background...'; sleep 3; done");
$dateProcess = new Process("while true; do echo $(date -d now); sleep 2; done");

// Add all three processes to a pool:
$pool = new Pool();
$pool->add("Ping", $pingProcess);
$pool->add("Loop", $infiniteProcess);
$pool->add("Date", $dateProcess);

// Start the execution of all processes:

// While processes are running, write their output to the terminal:
do {
	echo $pool->read();
	// Sleep to avoid hogging the CPU.
while($pool->numRunning() > 0);

Outputs something similar to:

[Ping] PING ( 56(84) bytes of data.
[Ping] 64 bytes from ( icmp_seq=1 ttl=52 time=8.78 ms
[Loop] background...
[Date] Mon 19 Aug 09:58:54 BST 2019
[Ping] 64 bytes from ( icmp_seq=2 ttl=52 time=8.75 ms
[Ping] 64 bytes from ( icmp_seq=3 ttl=52 time=8.75 ms
[Date] Mon 19 Aug 09:58:56 BST 2019
[Ping] 64 bytes from ( icmp_seq=4 ttl=52 time=8.75 ms
[Loop] background...
[Ping] 64 bytes from ( icmp_seq=5 ttl=52 time=8.80 ms
[Date] Mon 19 Aug 09:58:58 BST 2019

Notice how the date process is only set to loop three times, and after it is complete the other two infinite processes continue to run.