3

我一直在使用这个库repejota/phpnats来开发一个可以订阅特定频道的 NATS 客户端。但是在连接后,收到少量消息并有大约 30 秒的空闲时间,它会自行断开连接而没有任何中断。但是,我的 Node.js 客户端在相同的 NATS 服务器上运行良好。

这是我订阅的方式...

$c->subscribe(
    'foo',
    function ($message) {
        echo $message->getBody();
    }
);
$c->wait();

任何建议/帮助???

谢谢!

4

3 回答 3

0

默认情况下,PHP 脚本不能永远存在,因为 PHP 应该被认为是无状态的。这是设计使然,默认寿命为 30 秒(主机通常将其延长至 180 秒,但这实际上无关紧要)。您可以通过设置max_execution_time任何值(0意思是“永远”)自己延长该时间,但除非您知道自己想要,否则不建议这样做。如果不是,那么常用的方法是让脚本调用自己(即通过 GET 请求),经常传递一些参数让被调用的脚本在调用者完成的地方恢复。

于 2019-12-27T21:17:14.390 回答
0
$options = new ConnectionOptions();
$options->setHost('127.0.0.1')->setPort(4222);
$client = new Connection($options);
$client->connect(-1);

您需要将连接参数设置为-1

于 2020-03-11T10:03:30.767 回答
0

这只是默认的 PHP 超时杀死它吗?也许是这样的:

ini_set('max_execution_time', 180); // gives about 3 minutes for example
于 2019-12-27T17:40:36.750 回答