]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Добавляем логирование
authorVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Fri, 17 Oct 2025 12:40:50 +0000 (15:40 +0300)
committerVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Fri, 17 Oct 2025 12:40:50 +0000 (15:40 +0300)
erp24/jobs/SendRequestUploadDataToJob.php

index f0ba5c20f9c473f6f67d34acb5468baa196cadd0..497a35a3136fe14a46193d143fdd8481d283b02b 100644 (file)
@@ -7,6 +7,7 @@ namespace yii_app\jobs;
 
 
 
+use Throwable;
 use yii\queue\RetryableJobInterface;
 use yii_app\services\LogService;
 use yii_app\services\UploadService;
@@ -14,18 +15,58 @@ use yii_app\services\UploadService;
 class SendRequestUploadDataToJob implements RetryableJobInterface
 {
     public $decodingResult;
-    public function execute($queue) {
-        $request = $this->decodingResult;
-        $result = UploadService::processingUpload($request);
+    public function execute($queue)
+    {
+        // на всякий случай
+        if (function_exists('set_time_limit')) { @set_time_limit(0); }
+
+        try {
+            // 1) Нормализуем вход к массиву
+            $request = $this->decodingResult;
+
+            // 2) Базовая валидация (добавьте обязательные ключи, если знаете)
+            if (!is_array($request) || $request === []) {
+                throw new \RuntimeException('Request payload is empty or not an array after normalization');
+            }
+
+            // 3) Вызов сервиса
+            $result = UploadService::processingUpload($request);
+
+            // при необходимости что-то сделать с $result
+            return $result;
+        } catch (Throwable $e) {
+            // подробный лог + проброс дальше, чтобы queue отметила как fail и сработал retry
+            LogService::apiErrorLog(json_encode([
+                'error_id' => 900,
+                'error'    => $e->getMessage(),
+                'trace'    => $e->getTraceAsString(),
+                'payload_type' => is_object($this->decodingResult) ? get_class($this->decodingResult) : gettype($this->decodingResult),
+            ], JSON_UNESCAPED_UNICODE));
+
+            throw $e;
+        }
     }
 
-    public function getTtr() {
-        return 600;
+    public function getTtr()
+    {
+        // дайте больше времени, если загрузки реально долгие
+        return 900; // 15 минут (поставьте под ваш сценарий)
     }
 
-    public function canRetry($attempt, $error) {
-        LogService::apiErrorLog(json_encode(["error_id" => 900, "error" => $error->getMessage()], JSON_UNESCAPED_UNICODE));
+    public function canRetry($attempt, $error)
+    {
+        // безопасный лог даже если $error не Throwable (на всякий случай)
+        $msg = $error instanceof Throwable ? $error->getMessage() : (is_scalar($error) ? (string)$error : json_encode($error, JSON_UNESCAPED_UNICODE));
+        LogService::apiErrorLog(json_encode([
+            'error_id' => 900,
+            'error'    => $msg,
+            'attempt'  => $attempt,
+        ], JSON_UNESCAPED_UNICODE));
+
+        // до 3 попыток
         return $attempt < 3;
     }
 
+
+
 }