Как получить экземпляр codeigniter без загрузки сервера? - PullRequest
0 голосов
/ 14 января 2020

Я пытаюсь включить laravel очередей внутри самого codeiginter для моего использования. Так что laravel очередей я легко развязал и работает отлично. Прежде чем объяснить, сначала посмотрите эти два файла.

init. php

<?php

use Illuminate\Queue\Capsule\Manager as QueueManager;
use Illuminate\Redis\Database;
use Illuminate\Container\Container;

require 'vendor/autoload.php';
require 'SendMail.php';
require 'MyQueueException.php';



class Application extends Container
{
    public function isDownForMaintenance()
    {
        return false;
    }
}



$queue = new QueueManager(new Application());
$container = $queue->getContainer();
$container['config']['database.redis'] = [
    'cluster' => false,
    'default' => [
        'host' => $_ENV['REDIS_HOST'],
        'password' => $_ENV['REDIS_PASSWORD'],
        'port' => $_ENV['REDIS_PORT'],
        'database' => $_ENV['REDIS_CACHE_DB'],
    ],
];
$container->singleton('redis', function ($container) {
    return new Database($container['config']['database.redis']);
});

$container['config']["queue.connections.redis"] = [
    'driver' => 'redis',
    'connection' => 'default',
    'queue' => 'default',
    'retry_after' => 30,
];
$queue->addConnection([
    'driver' => 'redis',
    'connection' => 'default',
    'queue' => 'default',
    'retry_after' => 30,
]);

$queue->setAsGlobal();

return $queue;

работник. php

<?php
/**
 * worker
 */

use Illuminate\Queue\Worker;
use Illuminate\Events\Dispatcher;
use Illuminate\Queue\WorkerOptions;
use Illuminate\Container\Container as IlluminateContainer;

$queue = require 'init.php';


$dispatcher = new Dispatcher();
$worker = new Worker($queue->getQueueManager(), $dispatcher, new MyQueueException());
$options = new WorkerOptions();
$options->maxTries = 3;
$options->timeout = 300;



$worker->daemon('redis', 'default', $options);

Я хочу начать свой рабочий через php worker.php. Но я получаю ошибки на init.php. Проблема в том, что файл codeigniter не требуется. Я получаю сообщение об ошибке при получении через $_ENV, а также не могу получить экземпляр $CI здесь.

Как их объединить, чтобы я мог легко использовать преимущества codeigniter, такие как его модели, библиотека со службой очереди.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...