Илья, спасибо за пулл-реквест! Полезная штука :)

Илья, спасибо за пулл-реквест! Полезная штука :) Вот только думаю надо немного механизм изменить. Вот получается, что есть $_SESSION['Console']['completed'] === false, то скрипт опять выполняется в цикле. А вот рассмотрим такой пользовательский сценарий:

  1. Запускаем циклический скрипт, устанавливающий $_SESSION['Console']['completed'] = false;
  2. Этот скрипт при выполнении разваливается или еще по какой причине не доходит до того, чтобы установить $_SESSION['Console']['completed'] = true.
  3. Запускаем новый скрипт на выполнение, не циклический. Он все равно начнет отрабатываться бесконечно, потому как $_SESSION['Console']['completed'] === false, и true он не устанавливает.

Правильней не $_SESSION['Console']['completed'] === false проверять, а $this->getProperty('progress') == true. То есть в процессе выполнения ты смотришь, если надо повторно выполнить скрипт, то устанавливаешь $this->setProperty('progress', true); И действовать это будет только на текущий шаг. И так в каждом последующем шаге.