Ce este
Este un sistem prin care putem sa lansam in mod asincron un controller/action si sa-i urmarim progresul de executie. Locul de unde lansam procesul (adica acel controller/action) il numim proces master iar procesul lansat il numim proces child.
Cum facem
In master, in controller, lansam child-ul asa:
public function actionUnpack($id) {
(...)
$processId = UThreader::Launch('uploaded-document/unpack-executor?id=' . $id);
(...)
return $this->render('unpack', [
'model' => $model,
'processId' => $processId,
]);
}
In master, in template, putem sa afisam progresul asa:
<?= \Yii::$app->controller->renderPartial("/layouts/uthreader-loader", ['processId' => $processId]) ?>
Daca avem mai multe pe o pagina, adaugam idPrefix la renderPartial() – si fiecare dintre ele va veni cu propriul processId.
In child, trebuie doar sa updatam progresul la momentele cheie, asa:
UThreader::Update(UThreader::getProcessIdFromHeaders(),"optional, text pentru log...",10); // 10= progresul in procente
Important: in child foloseste try-catch si in catch seteaza progresul la 100 pentru ca altfel procesul master nu va arata niciodata ca child s-a terminat, in caz de eroare.
Categories: CORES (php core codebase), DOCUMENTATIE TEHNICA |
Leave a Reply
[TOP]