drupflare/worker - v1.0.4
    Preparing search index...

    Variable RUN_CRON_QUEUE_PHPConst

    RUN_CRON_QUEUE_PHP: "\nuse Drupal\\Core\\Queue\\DelayableQueueInterface;\nuse Drupal\\Core\\Queue\\DelayedRequeueException;\nuse Drupal\\Core\\Queue\\RequeueException;\nuse Drupal\\Core\\Queue\\SuspendQueueException;\nuse Drupal\\Core\\Session\\AnonymousUserSession;\n\n// __CFW_FIBER_SHIM__\nchdir('/drupal');\n\n$name = json_decode(__CFW_NAME__);\n$max = __CFW_MAX__;\n$out = [\n\t'queue' => $name,\n\t'processed' => 0,\n\t'failed' => 0,\n\t'requeued' => 0,\n\t'delayed' => 0,\n\t'suspended' => false,\n];\n$clock = function () {\n\treturn microtime(true) * 1000;\n};\n$t0 = $clock();\n\ntry {\n\t// __CFW_KERNEL_BOOT__\n\n\t$manager = Drupal::service('plugin.manager.queue_worker');\n\t$definitions = $manager->getDefinitions();\n\tif (!isset($definitions[$name])) {\n\t\t$out['reason'] = 'no queue worker plugin';\n\t} else {\n\t\t$lease = (int) ($definitions[$name]['cron']['time'] ?? 60);\n\t\t$queue = Drupal::queue($name);\n\t\ttry {\n\t\t\t$queue->createQueue();\n\t\t} catch (Throwable $e) {\n\t\t}\n\t\t$worker = $manager->createInstance($name);\n\t\t$switcher = null;\n\t\ttry {\n\t\t\t$switcher = Drupal::service('account_switcher');\n\t\t\t$switcher->switchTo(new AnonymousUserSession());\n\t\t} catch (Throwable $e) {\n\t\t\t$switcher = null;\n\t\t}\n\n\t\tfor ($i = 0; $i < $max; $i++) {\n\t\t\t$item = $queue->claimItem($lease);\n\t\t\tif (!is_object($item)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\t$worker->processItem($item->data);\n\t\t\t\t$queue->deleteItem($item);\n\t\t\t\t$out['processed']++;\n\t\t\t} catch (DelayedRequeueException $e) {\n\t\t\t\t// leave the lease alone unless the queue can extend it itself\n\t\t\t\tif ($queue instanceof DelayableQueueInterface) {\n\t\t\t\t\t$queue->delayItem($item, $e->getDelay());\n\t\t\t\t}\n\t\t\t\t$out['delayed']++;\n\t\t\t} catch (RequeueException $e) {\n\t\t\t\t$queue->releaseItem($item);\n\t\t\t\t$out['requeued']++;\n\t\t\t} catch (SuspendQueueException $e) {\n\t\t\t\t$queue->releaseItem($item);\n\t\t\t\t$out['suspended'] = true;\n\t\t\t\tbreak;\n\t\t\t} catch (Throwable $e) {\n\t\t\t\t// left leased, exactly as core does, so it retries after the lease\n\t\t\t\t$out['failed']++;\n\t\t\t\t$out['lastError'] = get_class($e) . ': ' . $e->getMessage();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif ($switcher !== null) {\n\t\t\ttry {\n\t\t\t\t$switcher->switchBack();\n\t\t\t} catch (Throwable $e) {\n\t\t\t}\n\t\t}\n\t\ttry {\n\t\t\t$out['remaining'] = (int) $queue->numberOfItems();\n\t\t} catch (Throwable $e) {\n\t\t}\n\t\t$out['ran'] = true;\n\t}\n} catch (Throwable $e) {\n\t$out['error'] = get_class($e) . ': ' . $e->getMessage();\n}\n\n$out['ms'] = round($clock() - $t0, 2);\necho json_encode($out);\n"