[rabbitmq-discuss] New open source PHP Amqp implementation

Robin Harvey harvey.robin at gmail.com
Sat Jan 15 19:46:00 GMT 2011

Hi Mark,

I've just finished implementing SSL support, if you grab the latest code
from code from github (https://github.com/BraveSirRobin/amqphp) and twiddle
with the tests/forker.xml configs a bit it should work.  From my tests,
client certificates and peer verification work fine, there's instructions in
the amqp.php file on PHP specific setup.  The SSL implementation does use
the Stream context API, as you suggested, however the plain sockets
implementation is still there (you can switch these in the forker.xml config


On Tue, Jan 11, 2011 at 4:32 PM, Mark Steele <msteele at beringmedia.com>wrote:

> Hi Robin,
> A few questions:
>    - Is it possible to make your class work with SSL connections? (Use
>    php's stream context api instead of creating plain sockets?).
>    - Will it behave properly in an app that uses signals/alarms?
> Nice work, looking forward to testing it.
> Mark Steele
> Bering Media Inc.
> On Sat, Jan 8, 2011 at 8:46 AM, Robin Harvey <harvey.robin at gmail.com>wrote:
>> Hello Rabbiteers!
>> I hope I'm not being importune by posting this message to let you know
>> about an LGPL Amqp implementation I've recently written for PHP 5.3:
>>  https://github.com/BraveSirRobin/amqphp
>> I've implemented the 0.9.1 Amqp spec using a code-generation approach.  If
>> any of the more experienced Amqp people were able to take a quick look at my
>> code in order to provide feedback, or have any other advice I'd be very
>> grateful.  There's a UML class diagram showing the implementation classes
>> here: https://github.com/BraveSirRobin/amqphp/raw/master/diag/amqp.png
>> Secondly, I have a question regarding using basic.consume on multiple
>> channels.  Is it possible for message frames to be mixed up for
>> basic.consume?  Section 4.2.6 of the spec says this:
>> *Content frames on a specific channel are strictly sequential. That is,
>> they may be mixed with frames for*
>> *other channels, but no two content frames from the same channel may be
>> mixed or overlapped, nor may*
>> *content frames for a single content be mixed with method frames on the
>> same channel.*
>> What I find confusing is that a single "message" consists of a frame
>> header, a content header and one or more content frames, for large messages
>> there can be many content frames; a single message contains many frames.
>>  For example, is it possible to get a content header frame on channel A,
>> then a content header frame on channel B, then the message content for
>> channel A, then the message content for channel B?  The testing I've done so
>> far indicates that RMQ always sends basic.deliver messages sequentially - it
>> sends the content header then all content frames for a single message on a
>> single channel in a non-interleaved fashion.  Is this always the case?  Is
>> this what the spec guarantees?
>> Many thanks,
>> --Robin
>> _______________________________________________
>> rabbitmq-discuss mailing list
>> rabbitmq-discuss at lists.rabbitmq.com
>> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20110115/0478cc51/attachment.htm>

More information about the rabbitmq-discuss mailing list