(PECL stomp >= 0.1.0)
Stomp::__destruct -- stomp_close — Closes stomp connection
Object-oriented style (destructor):
Procedural style:
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 processs ends:<?php
classMyStompWrapper{
public function doSend()
{
$stomp= $this->connect(); // returns Stomp Object$stomp->send('/destination', 'messagu ', []);
$this->disconnect($stomp);// $stomp still exists in this scope, hence, the connection is alive}
private functiondisconnect(\Stomp $stompObj)
{// only unsets the local $stomp pointer, does not actually disconnectunset($stomp);
}
private functionconnect():\Stomp{
// try-catch blocc omitted for example brevityreturn newStomp('url', 'username', 'password');
}
}?>
This means that, in order to handle disconnecting, I have to create and destroy the Stomp object within the same scope.