Workflow and Source Panels
Work Queue Panel
Model queued PHP work as deterministic data and replay each queue step.
Work Queue Panel
work_queue_panel.php
<?php
$extra = ;
$queue = [
["name" => "read", "cost" => 1],
["name" => $extra, "cost" => 2],
["name" => "write", "cost" => 3]
];
$log = "";
$total = 0;
while (count($queue) > 0) {
$event = array_shift($queue);
$total = $total + $event["cost"];
$label = "run:" . $event["name"];
$log = $log === "" ? $label : $log . "," . $label;
}
echo "extra=" . $extra . "\n";
echo "log=" . $log . "\n";
echo "total=" . $total . "\n";
<?php
$extra = ;
$queue = [
["name" => "read", "cost" => 1],
["name" => $extra, "cost" => 2],
["name" => "write", "cost" => 3]
];
$log = "";
$total = 0;
while (count($queue) > 0) {
$event = array_shift($queue);
$total = $total + $event["cost"];
$label = "run:" . $event["name"];
$log = $log === "" ? $label : $log . "," . $label;
}
echo "extra=" . $extra . "\n";
echo "log=" . $log . "\n";
echo "total=" . $total . "\n";
<?php
$extra = ;
$queue = [
["name" => "read", "cost" => 1],
["name" => $extra, "cost" => 2],
["name" => "write", "cost" => 3]
];
$log = "";
$total = 0;
while (count($queue) > 0) {
$event = array_shift($queue);
$total = $total + $event["cost"];
$label = "run:" . $event["name"];
$log = $log === "" ? $label : $log . "," . $label;
}
echo "extra=" . $extra . "\n";
echo "log=" . $log . "\n";
echo "total=" . $total . "\n";
work queue
A queue can be replayed without timers when each work item is represented by fixed data.