請注意,這個函式庫在解構時不會發送 DISCONNECT 訊框。因此,連線階段會比實例的生命週期更長,並在 Artemis 伺服器中累積!
(PECL stomp >= 0.1.0)
Stomp::__destruct -- stomp_close — 關閉 stomp 連線
參見 stomp_connect()。
請注意,這個函式庫在解構時不會發送 DISCONNECT 訊框。因此,連線階段會比實例的生命週期更長,並在 Artemis 伺服器中累積!
在建構子/解構子方法中加入連線/斷線,這樣不是很奇怪嗎?
我遇到一個案例,連線會一直保持到 PHP 程序結束
<?php
class MyStompWrapper {
public function doSend()
{
$stomp = $this->connect(); // 返回 Stomp 物件
$stomp->send('/destination', 'message', []);
$this->disconnect($stomp);
// $stomp 在此作用域中仍然存在,因此連線仍然有效
}
private function disconnect(\Stomp $stompObj)
{
// 僅取消設定本地 $stomp 指標,實際上並沒有斷開連線
unset($stomp);
}
private function connect():\Stomp
{
// 為簡潔起見,省略了 try-catch 區塊
return new Stomp('url', 'username', 'password');
}
}
?>
這表示,為了處理斷線,我必須在同一個作用域內建立和銷毀 Stomp 物件。