0

我已经安装了 codeigniter 3.1.8 并使用 composer安装了这个库https://github.com/php-amqplib/php-amqplib :

composer require php-amqplib/php-amqplib

这已经创建了一个目录供应商在此处输入图像描述

我已经在此处查看了有关如何使用库的公认答案如何在 codeigniter 中使用作曲家包?

但这是我在供应商中的目录结构。

在此处输入图像描述

第二

和里面 php-amqplib

在此处输入图像描述

和里面 php-amqplib

在此处输入图像描述

如果我看一下,index.php我发现 fcpath 已经被定义了

// Path to the front controller (this file) directory
define('FCPATH', dirname(__FILE__).DIRECTORY_SEPARATOR);

require_once BASEPATH.'core/CodeIgniter.php';

并再次定义它会导致错误。我怎样才能在我的控制器方法中使用 php-amqplib?

4

3 回答 3

4

如果您的问题是 - 我怎样才能在我的控制器方法中使用 php-amqplib?

步骤1 :

在一开始就允许或要求 autoload.php 文件,但在 codeigniter 上你一般不能这样做。所以在配置文件中更改一行,将自动要求autoload.php文件。

CodeIgniter/application/config/config.php寻找 :

$config['composer_autoload'] = FALSE;$config['composer_autoload'] = TRUE;

第2步 :

在你的控制器类上是这样的:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;

class Welcome extends CI_Controller {
   public function index()
   {
        // your business logic like this
        $msg = new AMQPMessage($msg_body);
        $ch->batch_basic_publish($msg, $exchange);
   }
}
步骤 - 3:

现在您可以通过 URL 调用它

http://example.com/Welcome

现在更多ref: PhpAmqpLib

于 2018-05-17T06:56:57.910 回答
1

在 /application/config/config.php 中更改 composer_autoload 配置,如下所示 $config['composer_autoload'] = 'vendor/autoload.php';

于 2019-02-16T03:53:01.040 回答
0

这将打开和关闭连接

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

use PhpAmqpLib\Message\AMQPMessage;
use PhpAmqpLib\Connection\AMQPStreamConnection; 

class Welcome extends CI_Controller {

    public function index()
    {
        $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
        $channel = $connection->channel();
        $channel->queue_declare('hello', false, false, false, false);

        $msg = new AMQPMessage('Yur message goes here....');
        $channel->basic_publish($msg, '', 'hello');

        $channel->close();
        $connection->close();

        $this->load->view('welcome_message');
    }
}
于 2018-05-17T07:09:53.897 回答