Supported Versions: PHP 4, PHP 5, PHP 7, PHP 8
Execute an external program
exec(string $command, array &$output nullint &$result_code null): string|false
    public function testExecuteExampleWithoutLoopRunRunsLoopAndExecutesTicks()

    {

        
$output exec(escapeshellarg(PHP_BINARY) . ' 01-ticks-loop-class.php');



        
$this->assertEquals('abc'$output);

    }
    public function testExecuteExampleWithExplicitLoopRunRunsLoopAndExecutesTicks()

    {

        
$output exec(escapeshellarg(PHP_BINARY) . ' 02-ticks-loop-instance.php');



        
$this->assertEquals('abc'$output);

    }
    public function testExecuteExampleWithExplicitLoopRunAndStopRunsLoopAndExecutesTicksUntilStopped()

    {

        
$output exec(escapeshellarg(PHP_BINARY) . ' 03-ticks-loop-stop.php');



        
$this->assertEquals('abc'$output);

    }
    public function testExecuteExampleWithUncaughtExceptionShouldNotRunLoop()

    {

        
$time microtime(true);

        
exec(escapeshellarg(PHP_BINARY) . ' 11-uncaught.php 2>/dev/null');

        
$time microtime(true) - $time;



        
$this->assertLessThan(1.0$time);
    public function testExecuteExampleWithUndefinedVariableShouldNotRunLoop()

    {

        
$time microtime(true);

        
exec(escapeshellarg(PHP_BINARY) . ' 12-undefined.php 2>/dev/null');

        
$time microtime(true) - $time;



        
$this->assertLessThan(1.0$time);
    public function testExecuteExampleWithExplicitStopShouldNotRunLoop()

    {

        
$time microtime(true);

        
exec(escapeshellarg(PHP_BINARY) . ' 21-stop.php 2>/dev/null');

        
$time microtime(true) - $time;



        
$this->assertLessThan(1.0$time);
    public function testExecuteExampleWithExplicitStopInExceptionHandlerShouldNotRunLoop()

    {

        
$time microtime(true);

        
exec(escapeshellarg(PHP_BINARY) . ' 22-uncaught-stop.php 2>/dev/null');

        
$time microtime(true) - $time;



        
$this->assertLessThan(1.0$time);