как использовать динамическое расширение php.ini в файле класса laravel

я узнал о Кафке и Ларавеле.

так что я пытаюсь реализовать Кафка (с помощью RDKAFKA) в Laravel, но у меня есть проблема

когда я пытался использовать Кафку в PHP, все работает нормально в чистом PHP, но я получил ошибку, когда я попытался реализовать его в Laravel в качестве командного класса

$conf = new RdKafka\Conf();

Я думаю, что это проблема,
RdKafka является динамическим расширением в php.ini (я добавил его вручную непосредственно из php.ini) и стало неопределенным, когда я пытался реализовать в laravel, и я не знаю, как его решить.

Как использовать динамическое расширение в Laravel?

вот руководство по классу команд и функциям потребителя от rdkafka

namespace App\Console\Commands;
use Illuminate\Console\Command;

class ExampleCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'command:name';

/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';

/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{

parent::__construct();
}

/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
//
$conf = new RdKafka\Conf();$conf->set('group.id', 'myConsumerGroup');

$rk = new RdKafka\Consumer($conf);
$rk->addBrokers("127.0.0.1");

$topicConf = new RdKafka\TopicConf();

$topicConf->set('auto.commit.interval.ms', 100);
$topicConf->set('offset.store.method', 'file');
$topicConf->set('offset.store.path', sys_get_temp_dir());$topicConf->set('auto.offset.reset', 'smallest');

$topic = $rk->newTopic("test", $topicConf);$topic->consumeStart(0, RD_KAFKA_OFFSET_STORED);

while (true) {
$message = $topic->consume(0, 120*10000);
switch ($message->err) {
case RD_KAFKA_RESP_ERR_NO_ERROR:
var_dump($message);
break;
case RD_KAFKA_RESP_ERR__PARTITION_EOF:
echo "No more messages; will wait for more\n";
break;
case RD_KAFKA_RESP_ERR__TIMED_OUT:
echo "Timed out\n";
break;
default:
throw new \Exception($message->errstr(), $message->err);
break;
}
}

}
}

ошибка, которую я получил от команды ремесленника

[Symfony\Component\Debug\Exception\FatalThrowableError]
Class 'App\Console\Commands\RdKafka\Conf' not found

0

Решение

Я использую PHPStorm, и у меня возникла та же проблема с IDE, распознающей пространство имен. В конце концов я обнаружил, что мне нужно установить заглушки для IDE, чтобы распознать пространства имен расширений. Расширение действительно работает, хотя (\ RdKafka). Просто IDE не распознала пространство имен, пока я не установил заглушки.

https://github.com/kwn/php-rdkafka-stubs

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector