pdezwart/php-amqp

PHP AMQP 绑定库

资助包维护!
lstrojny

安装次数: 200,807

依赖项: 3

建议者: 0

安全: 0

星标: 567

关注者: 29

分支: 122

语言:C


README

为 AMQP C 库(https://github.com/alanxz/rabbitmq-c)提供的面向对象的 PHP 绑定

要求

  • PHP >= 7.4,具有 ZTS 或非 ZTS 版本。
  • 从 php-amqp 2.0.0 开始,至少需要 librabbitmq 的 0.8.0 版本(建议至少 0.10.0 版本)
  • 要运行测试,需要 RabbitMQ 服务器 >= 3.4.0。

安装

Linux

某些系统在其软件包仓库中提供了 php-amqp 扩展或可以通过外部仓库提供,因此这可能是首选安装方式。

可以从 remi 仓库 获取最新的 php-pecl-amqplibrabbitmq RPM。

如果您想保持最新版本,可以从 PECL 安装 php-amqp 扩展或从源代码编译(按照 PHP 官方文档说明 进行操作)。

Windows

  • 在下载之前,请通过在终端中输入 php -i|findstr " Thread" 检查您的 PHP 安装是否为线程安全或非线程安全。
  • https://pecl.php.net/package/amqp 下载与您的 PHP 版本兼容的线程安全或非线程安全版本的扩展。在可用版本的列表中查找每个发布旁边的 "DLL" 链接。
  • 下载后,将 rabbitmq.4.dllrabbitmq.4.pdb 文件复制到 PHP 根目录,并将 php_amqp.dllphp_amqp.pdb 文件复制到 PHP\ext 目录。
  • extension=amqp 添加到 php.ini 文件。
  • 使用 php -m 检查模块是否正确安装。

文档

请查看官方的 RabbitMQ 教程 以及 php-amqp 特定示例

还有可用的 存根文件,这些文件记录了 PHP AMQP 的 API。这些存根也可以用于您的 IDE 进行代码补全、导航和文档。

查看 升级指南 以检查版本之间的破坏性更改,例如从 1.x 到 2.x。

最后,查看 测试 以查看使用示例和边缘情况。

注意和限制

  • 您不能在线程之间共享任何 AMQP API 对象(AMQPConnectionAMQPChannelAMQPQueueAMQPExchange)。每个线程应使用单独的连接。
  • 每个连接信息(amqp_conn_res_h)只能有一个持久连接。如果尝试使用相同凭据创建另一个持久连接,将抛出异常。
  • 持久连接上的通道不是持久的:它们在请求之间被销毁。
  • 心跳只限于阻塞调用,因此如果没有连接上的操作或者没有活跃的消费者组,连接可能会被代理服务器视为已死而关闭。

相关库

如何报告问题

  1. 首先,搜索已关闭的问题和 stackoverflow.com
  2. 提交一个简短且明确的标题,描述你的问题
  3. 提供平台信息、PHP 解释器版本、SAPI 模式(cli、fpm、cgi 等)使用此扩展的扩展版本、php-amqp 扩展版本、librabbitmq 版本、构建工具版本。
  4. 描述应提供以确定的方式重现问题的信息(使用 gist 包含大源代码的方式最为理想)。使用 Vagrant 来复制不寻常的环境。
  5. 如果生成了堆栈跟踪,请通过 gist 或在描述中直接包含重要部分(如果你确定你在做什么)。

报告问题之前要检查的事项

其中一些,列表并不完整。

  1. 你在正确的机器和环境中运行,并且你的平台满足你的应用程序要求。
  2. librabbitmq 已安装并可在你的环境中被发现,因此 php-amqp 扩展可以加载它。
  3. 系统中存在 php-amqp 扩展(在 Windows 上查找 amqp.soamqp.dll),它已加载(使用 php --ri amqp 产生了某些信息),并且没有可能模拟 php-amqp 工作的底层抽象。
  4. 你有正确的 RabbitMQ 凭据。
  5. 你使用的是最新的 php-amqp、librabbitmq、RabbitMQ,有时甚至是 PHP 版本本身。有时你的问题已经解决了。
  6. 禁用了其他扩展(特别是在 PHP 解释器崩溃,并且你获得堆栈跟踪和段错误时特别有用)。

开发

有关详细信息,请参阅 DEVELOPMENT.md