<?php function async(callable $call): Fiber { $fiber = new Fiber($call); $fiber->start(); return $fiber; } function all(Fiber ...$fibers): array { $all_terminated = function() use($fibers) { foreach($fibers as $fiber) { if (!$fiber->isTerminated()) { return false; } } return true; }; while(!$all_terminated()) { foreach($fibers as $fiber) { if($fiber->isSuspended()) { $fiber->resume(); } } } $res = []; foreach($fibers as $fiber) { $res[] = $fiber->getReturn(); } } function await(Fiber $fiber): mixed { while($fiber->isSuspended()) { $fiber->resume(); } return $fiber->getReturn(); } $a = async(function(): string { ob_start(); // v- called from layout.html.twig Fiber::suspend(); echo '<-- part 1 - layout -->'; return ob_get_clean(); }); $b = async(function(): string { ob_start(); // v- called from layout.html.twig Fiber::suspend(); echo '<-- part 2 - layout -->'; return ob_get_clean(); }); all($a, $b);
You have javascript disabled. You will not be able to edit any code.