pdezwart / php-amqp
PHP AMQP 绑定库
v2.1.2
2024-01-22 10:49 UTC
Requires
- php: >=7.4
Requires (Dev)
- ext-dom: *
- ext-json: *
- ext-simplexml: *
- slevomat/coding-standard: ^8.13
- symplify/easy-coding-standard: *
- dev-latest
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.0
- v2.0.0RC1
- v2.0.0beta2
- v2.0.0beta1
- v2.0.0alpha2
- v2.0.0alpha1
- v1.11.0
- v1.11.0RC1
- v1.11.0beta
- v1.10.2
- v1.10.1
- v1.10.0
- v1.9.4
- v1.9.3
- v1.9.1
- v1.9.0
- v1.9.0beta2
- v1.9.0beta1
- v1.8.0
- v1.8.0beta2
- v1.8.0beta1
- v1.7.1
- v1.7.0
- v1.7.0alpha2
- v1.7.0alpha1
- v1.6.1
- v1.6.0
- v1.6.0beta4
- v1.6.0beta3
- v1.6.0beta2
- dev-dependabot/composer/phpstan/phpdoc-parser-1.30.0
- dev-dependabot/composer/symplify/easy-coding-standard-12.3.5
- dev-dependabot/composer/squizlabs/php_codesniffer-3.10.2
- dev-dependabot/github_actions/shivammathur/setup-php-2.31.1
- dev-dependabot/github_actions/actions/checkout-4.1.7
- dev-dependabot/github_actions/awalsh128/cache-apt-pkgs-action-1.4.2
- dev-dependabot/composer/slevomat/coding-standard-8.15.0
This package is not auto-updated.
Last update: 2024-09-24 06:56:18 UTC
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-amqp
和 librabbitmq
RPM。
如果您想保持最新版本,可以从 PECL 安装 php-amqp 扩展或从源代码编译(按照 PHP 官方文档说明 进行操作)。
Windows
- 在下载之前,请通过在终端中输入 php -i|findstr " Thread" 检查您的 PHP 安装是否为线程安全或非线程安全。
- 从 https://pecl.php.net/package/amqp 下载与您的 PHP 版本兼容的线程安全或非线程安全版本的扩展。在可用版本的列表中查找每个发布旁边的 "DLL" 链接。
- 下载后,将
rabbitmq.4.dll
和rabbitmq.4.pdb
文件复制到 PHP 根目录,并将php_amqp.dll
和php_amqp.pdb
文件复制到PHP\ext
目录。 - 将
extension=amqp
添加到php.ini
文件。 - 使用 php -m 检查模块是否正确安装。
文档
请查看官方的 RabbitMQ 教程 以及 php-amqp 特定示例。
还有可用的 存根文件,这些文件记录了 PHP AMQP 的 API。这些存根也可以用于您的 IDE 进行代码补全、导航和文档。
查看 升级指南 以检查版本之间的破坏性更改,例如从 1.x 到 2.x。
最后,查看 测试 以查看使用示例和边缘情况。
注意和限制
- 您不能在线程之间共享任何 AMQP API 对象(
AMQPConnection
、AMQPChannel
、AMQPQueue
、AMQPExchange
)。每个线程应使用单独的连接。 - 每个连接信息(amqp_conn_res_h)只能有一个持久连接。如果尝试使用相同凭据创建另一个持久连接,将抛出异常。
- 持久连接上的通道不是持久的:它们在请求之间被销毁。
- 心跳只限于阻塞调用,因此如果没有连接上的操作或者没有活跃的消费者组,连接可能会被代理服务器视为已死而关闭。
相关库
- enqueue/amqp-ext 是一个与 amqp interop 兼容的包装器
- symfony/amqp-messenger 为 symfony/messenger 提供了 AMQP 集成,这是 Symfony 的流行消息组件。
如何报告问题
- 首先,搜索已关闭的问题和 stackoverflow.com。
- 提交一个简短且明确的标题,描述你的问题
- 提供平台信息、PHP 解释器版本、SAPI 模式(cli、fpm、cgi 等)使用此扩展的扩展版本、php-amqp 扩展版本、librabbitmq 版本、构建工具版本。
- 描述应提供以确定的方式重现问题的信息(使用 gist 包含大源代码的方式最为理想)。使用 Vagrant 来复制不寻常的环境。
- 如果生成了堆栈跟踪,请通过 gist 或在描述中直接包含重要部分(如果你确定你在做什么)。
报告问题之前要检查的事项
其中一些,列表并不完整。
- 你在正确的机器和环境中运行,并且你的平台满足你的应用程序要求。
- librabbitmq 已安装并可在你的环境中被发现,因此 php-amqp 扩展可以加载它。
- 系统中存在 php-amqp 扩展(在 Windows 上查找
amqp.so
或amqp.dll
),它已加载(使用php --ri amqp
产生了某些信息),并且没有可能模拟 php-amqp 工作的底层抽象。 - 你有正确的 RabbitMQ 凭据。
- 你使用的是最新的 php-amqp、librabbitmq、RabbitMQ,有时甚至是 PHP 版本本身。有时你的问题已经解决了。
- 禁用了其他扩展(特别是在 PHP 解释器崩溃,并且你获得堆栈跟踪和段错误时特别有用)。
开发
有关详细信息,请参阅 DEVELOPMENT.md。