Я пытаюсь включить 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, такие как его модели, библиотека со службой очереди.