有没有办法使用 PhpStorm 和 Xdebug 调试 RabbitMQ Consumer (php-ampqlib)?

Is There a way to debug RabbitMQ Consumer (php-ampqlib) using PhpStorm and Xdebug?

这是我的开发设置:

IDE:PhpStorm 9.0.2
调试器: Xdebug 2.3.3
消息队列服务器: RabbitMQ 3.5.6
PHP 连接到 RabbitMQ 服务器的库: php-ampqlib

为了启动我的消费者,我正在使用 CakePHP 任务和 运行,如下所示:

../lib/Cake/Console/cake cron message_trigger_consumer

当我 运行 这个命令时,我的消费者正在等待消息,该消息将来自 Producer (例如:发送的保存表单按钮一封确认邮件)。到这里为止,一切正常,但我的两个问题是:

1) 有没有办法调试 Consumer?在我看来,Consumer 处于不同的进程中,这就是 Xdebug 无法调试它的原因
2) 有什么方法可以将我的 Consumer 进程附加到我当前在 PhpStorm + Xdebug 中的调试?

如果你不明白我的问题,请把你的疑惑告诉我。

在 Web 上下文中,Xdebugs 会话通常由名为 XDEBUG_SESSION 的 Cookie 触发。

在 CLI 上没有 cookie,因此您必须告诉 xdebug 手动启动会话:

export PHP_IDE_CONFIG="serverName=your-server-name-configured-in-php-storm"
export XDEBUG_CONFIG="remote_host=ip_of_php_storm_pc idekey=PHPSTORM"

然后在 PHP Storm 中通过 phone 听筒图标监听传入连接。

效果很好!

Xdebug 和 RabbitMQ 消费者命令

运行 cake cron message_trigger_consumer 不会在 IDE 中触发 xdebug。要让 PhpStorm 知道连接,您需要在命令前加上环境变量:

PHP_IDE_CONFIG="serverName=example.com" cake cron message_trigger_consumer

example.com 替换为适当的服务器名称。