Service not found exception при запуске крон через командную строку

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

BogdanOnyshenko
BogdanOnyshenko
Репутация: 0
Сообщения: 1
Зарегистрирован: 19.09.2022
С нами: 1 год 6 месяцев

Сообщение #1 BogdanOnyshenko » 19.09.2022, 11:55

Всем добрый день. Делаю кастомный импорт товаров из CSV файла. Одной из его функций является запуск по крону. В модуле имплементирую не много измененный ImportHelper В моем случае назвал его TorgsoftImportHelper. В директории init/ создал services.php со следующим содержимым.

Код: Выделить всё

<?php
namespace Okay\Modules\Torgsoft\TorgsoftIntegration;
use Okay\Core\EntityFactory;
use Okay\Core\Image;
use Okay\Core\Languages;
use Okay\Core\OkayContainer\Reference\ServiceReference as SR;
use Okay\Core\OkayContainer\Reference\ParameterReference as PR;
use Okay\Core\QueryFactory;
use Okay\Modules\Torgsoft\TorgsoftIntegration\helpers\BackendTorgsoftImportHelper;

return [
    \Okay\Modules\Torgsoft\TorgsoftIntegration\helpers\BackendTorgsoftImportHelper::class => [
        'class' => BackendTorgsoftImportHelper::class,
        'arguments' => [
            //new SR(Okay\Modules\Torgsoft\TorgsoftIntegration\helpers\Import::class),
            new SR(QueryFactory::class),
            new SR(Languages::class),
            new SR(EntityFactory::class),
            new SR(Image::class),
        ]
    ],
];


Такой подход вполне работает если запускать модуль через админ панель. Но когда дело доходит до запуска крон файла с помощью командной строки выдает исключение Service not found. Сам по себе крон состоит из конфиг файла с обьявлением переменной $DI и прочими зависимостями я приложу его ниже и сам крон файл который импортирует товары. Сам BackendTorgsoftImportHelper вызываю через $DI->get(). Как правильно инициализировать модуль при запуске крона и что я упускаю? Ведь если зарегистрировать BackendTorgsoftImportHelper в ядре то все работает как и предполагалось.

Обещанный файл
Okay/Modules/Torgsoft/TorgsoftIntegration/cron/configure.php

Код: Выделить всё

<?php

if(!empty($_SERVER['HTTP_USER_AGENT'])){
    session_name(md5($_SERVER['HTTP_USER_AGENT']));
}


session_start();
chdir(dirname(dirname(__DIR__)));

use Okay\Core\Request;
use Okay\Core\Response;
use Okay\Core\Settings;
use Okay\Core\Config;
use Okay\Core\Managers;
use Okay\Entities\ManagersEntity;
use Okay\Core\EntityFactory;
use Okay\Core\Modules\Modules;
use Okay\Core\BackendTranslations;
$rootDir=dirname(__DIR__, 5);
require_once($rootDir.'/vendor/autoload.php');


$DI = include $rootDir.'/Okay/Core/config/container.php';

/** @var Config $config */
$config = $DI->get(Config::class);

/** @var Modules $modules */
$modules = $DI->get(Modules::class);
$modules->startEnabledModules();

/** @var BackendTranslations $backendTranslations */
$backendTranslations = $DI->get(BackendTranslations::class);
/** @var EntityFactory $entityFactory */
$entityFactory = $DI->get(EntityFactory::class);

/** @var Request $request */
$request = $DI->get(Request::class);

/** @var Response $response */
$response = $DI->get(Response::class);
/** @var Settings $settings */
/** @var Managers $managers */
$managers = $DI->get(Managers::class);
/** @var ManagersEntity $managersEntity */
$managersEntity = $entityFactory->get(ManagersEntity::class);




За ранее благодарю.

Название раздела: Вопросы по работе с OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Вопросы по работе с OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 44 гостя