Пример асинхронного выполнения блока кода на PHP

Снова заметка с тупым и самым простейшим примером

class Deffered {

    public $deffereds;
    
    public function addDeffered($defferDefinition)
    {
        $this->deffereds[] = [
            'timer'=>$defferDefinition['timer'],
            'callback'=>$defferDefinition['callback']
            ];
    }
    
    public function run(){
        while(true){
            $currentTime = time();
            foreach($this->deffereds as $i => $deffered){
                if($currentTime >= $deffered['timer']){
                   $deffered['callback']();
                   echo "\n";
                   unset($this->deffereds[$i]);
                }
                
            }
              if(count($this->deffereds) <= 0){
                  break;
              }
        }
    }

}

$deff = new Deffered;

$deff->addDeffered([
    'timer'=>time()+2,
    'callback'=>function(){
        echo 'execute 1';
    }
    ]);
    
$deff->addDeffered([
    'timer'=>time()+1,
    'callback'=>function(){
        echo 'execute 2';
    }
    ]);    

$deff->run();

Результат:
execute 2
execute 1

Loading

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *