Be careful, the lib does not send a DISCONNECT frame on destruction. Therefore the sessions will outlive the instance, accumulating in Artemis servers!
(PECL stomp >= 0.1.0)
Stomp::__destruct -- stomp_close — Closes stomp connection
面向对象风格 (destructor):
过程化风格:
Closes a previously opened connection.
See stomp_connect().
Be careful, the lib does not send a DISCONNECT frame on destruction. Therefore the sessions will outlive the instance, accumulating in Artemis servers!
Isn't it a little odd to have connect/disconnect in the constructor/destructor methods? I have a case where the connection is presumably kept alive until the PHP process ends:<?phpclass MyStompWrapper { public function doSend() { $stomp = $this->connect(); // returns Stomp Object $stomp->send('/destination', 'message', []); $this->disconnect($stomp); // $stomp still exists in this scope, hence, the connection is alive } private function disconnect(\Stomp $stompObj) { // only unsets the local $stomp pointer, does not actually disconnect unset($stomp); } private function connect():\Stomp { // try-catch block omitted for example brevity return new Stomp('url', 'username', 'password'); }}?>This means that, in order to handle disconnecting, I have to create and destroy the Stomp object within the same scope.