%PDF- %PDF-
Direktori : /home2/vacivi36/intranet.vacivitta.com.br/protected/vendor/yiisoft/yii2-queue/src/debug/ |
Current File : //home2/vacivi36/intranet.vacivitta.com.br/protected/vendor/yiisoft/yii2-queue/src/debug/Panel.php |
<?php /** * @link https://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC * @license https://www.yiiframework.com/license/ */ namespace yii\queue\debug; use Yii; use yii\base\NotSupportedException; use yii\base\ViewContextInterface; use yii\helpers\VarDumper; use yii\queue\JobInterface; use yii\queue\PushEvent; use yii\queue\Queue; /** * Debug Panel. * * @author Roman Zhuravlev <zhuravljov@gmail.com> */ class Panel extends \yii\debug\Panel implements ViewContextInterface { private $_jobs = []; /** * @inheritdoc */ public function getName() { return 'Queue'; } /** * @inheritdoc */ public function init() { parent::init(); PushEvent::on(Queue::class, Queue::EVENT_AFTER_PUSH, function (PushEvent $event) { $this->_jobs[] = $this->getPushData($event); }); } /** * @param PushEvent $event * @return array */ protected function getPushData(PushEvent $event) { $data = []; foreach (Yii::$app->getComponents(false) as $id => $component) { if ($component === $event->sender) { $data['sender'] = $id; break; } } $data['id'] = $event->id; $data['ttr'] = $event->ttr; $data['delay'] = $event->delay; $data['priority'] = $event->priority; if ($event->job instanceof JobInterface) { $data['class'] = get_class($event->job); $data['properties'] = []; foreach (get_object_vars($event->job) as $property => $value) { $data['properties'][$property] = VarDumper::dumpAsString($value); } } else { $data['data'] = VarDumper::dumpAsString($event->job); } return $data; } /** * @inheritdoc */ public function save() { return ['jobs' => $this->_jobs]; } /** * @inheritdoc */ public function getViewPath() { return __DIR__ . '/views'; } /** * @inheritdoc */ public function getSummary() { return Yii::$app->view->render('summary', [ 'url' => $this->getUrl(), 'count' => isset($this->data['jobs']) ? count($this->data['jobs']) : 0, ], $this); } /** * @inheritdoc */ public function getDetail() { $jobs = isset($this->data['jobs']) ? $this->data['jobs'] : []; foreach ($jobs as &$job) { $job['status'] = 'unknown'; /** @var Queue $queue */ if ($queue = Yii::$app->get($job['sender'], false)) { try { if ($queue->isWaiting($job['id'])) { $job['status'] = 'waiting'; } elseif ($queue->isReserved($job['id'])) { $job['status'] = 'reserved'; } elseif ($queue->isDone($job['id'])) { $job['status'] = 'done'; } } catch (NotSupportedException $e) { } catch (\Exception $e) { $job['status'] = $e->getMessage(); } } } unset($job); return Yii::$app->view->render('detail', compact('jobs'), $this); } }