Снова заметка с тупым и самым простейшим примером
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