e23fiber.php PHP redir stdout, achtung läuft nur in CLI!!!
e23fiber.php
e23fiber.php
with iterator
fiber res 0 begin, suspending
fiber res 0 suspend got 1
fiber res 1 begin, suspending
fiber res 1 suspend got 2
fiber res 2 begin, suspending
fiber res 2 suspend got 99
fiber res 3 begin, suspending
fiber res 3 suspend got
fiber res 3 got returning
fiber res 2 got 99 returning
fiber res 1 got 2 returning
fiber res 0 got 1 returning
with fiber
main starting
fiber res 0 begin, suspending
main start got res lv 0
main resuming(rEins)
fiber res 0 suspend got rEins
fiber res 1 begin, suspending
main resume(rEins) got res lv 1
main resuming(rZwei)
fiber res 1 suspend got rZwei
fiber res 2 begin, suspending
main resume(rZwei) got res lv 2
main resuming(return)
fiber res 2 suspend got
fiber res 2 got returning
fiber res 1 got rZwei returning
fiber res 0 got rEins returning
main resume(return) got null
End e23fiber.php
args
e23fiber.php
/home/ch45859/web/wlkl.ch/public_html/inf/php/e23fiber.php
*** code does not have a span berfore first <br>***<html>
<h2><?php echo basename(__file__); ?> PHP redir stdout, achtung läuft nur in CLI!!!</h3>
<?php
require_once('env.php');
outBegin();
function res($lv) {
global $nx;
out("fiber res $lv begin, suspending");
$val = $nx("res lv $lv");
out("fiber res $lv suspend got $val");
if ($val !== false)
res($lv+1);
out("fiber res $lv got $val returning");
}
$nxIt = [1,2,99];
function nxIt($a) {
global $nxIt;
if (false !== $cu = current($nxIt))
next($nxIt);
return $cu;
}
function nxFib($a) {
return ('return' === $r = Fiber::suspend($a)) ? false : $r;
}
outH('with iterator');
$nx = 'nxIt';
res(0);
outH('with fiber');
$nx = 'nxFib';
$fiber = new Fiber(fn () => res(0));
out("main starting");
out("main start got", $fiber->start());
out("main resuming(rEins)");
out("main resume(rEins) got", $fiber->resume('rEins'));
out("main resuming(rZwei)");
out("main resume(rZwei) got", $fiber->resume('rZwei'));
out("main resuming(return)");
out("main resume(return) got", $fiber->resume('return'));
outEnd(__file__);
?>