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.