[rabbitmq-discuss] PHP Client libraries
Pieter de Zwart
pdezwart at rubiconproject.com
Tue Feb 9 21:26:09 GMT 2010
Hey guys,
Please find an added patch to fix the queue->get method, which was returning
the wrong associative array key for the message. This should be combined
with the previous patch.
Pieter
On 2/9/10 11:20 AM, "Pieter de Zwart" <pdezwart at rubiconproject.com> wrote:
> Good news. Seems like have a mostly working php-rabbit PHP module. Attached is
> the patch to make it work with RabbitMQ 1.7*. For those of you less familiar
> with building/managing PHP clients, perform the following commands:
>
> $ wget http://php-rabbit.googlecode.com/files/php-rabbit.zip
> $ unzip php-rabbit.zip
> $ cd php-rabbit
> $ phpize
> $ php I | head
> Copy the current ./configure statement and execute it
> $ patch rabbit.c php-rabbit.patch
> $ make && sudo make install
> $ echo ³extension = /path/to/lib/folder/rabbit.so² > /etc/php.d/rabbit.ini
> $ php m | grep rabbit
> The last command should display ³rabbit², meaning that the library was
> recognized.
>
> I have also included a very basic test script that you can use to validate
> that things are working. I tweaked it post test, so there might be some typos
> in it.
>
> I had to run:
> $ sudo /sbin/ldconfig
> to get the librabbitmq.so library to be pulled in, so please keep that in
> mind.
>
> If you have any questions, please let me know. There are still a few bugs, two
> of which are:
> 1. During connection, if you specify additional parameters like AMQP_DURABLE,
> the exchange type length is seen as 0, even if you specify one, and it
> therefore defaults all new exchange types to direct¹. We use topic exchanges
> here, so I tweaked it to default to topic¹ until that gets fixed.
> 2. I managed to make it segfault by passing in a weird exchange name. I will
> put together a demonstration script asap.
>
> This patch fixes:
> 1. Names and typos. Everything is AMQP (not AQPM, etc..) and the connection
> class is AMQPConnection, not AQMPConnect.
> 2. The library is now defined correctly, and should therefore load without
> tweaking the configure or doing any other wonky things.
> 3. All of the METHOD_OK parameters are no longer dereferenced improperly
> 4. I added the heartbeat parameter to provide the valid number of parameters
> to amqp_login
>
> I am now going to go load test this thing to see if I can make it crash.
>
> Pieter
>
>
> On 2/9/10 8:47 AM, "Pieter de Zwart" <pdezwart at rubiconproject.com> wrote:
>
>> Hey guys,
>>
>> Just FYI, I have a mostly working php-rabbit patch. Using the demo script I
>> can declare, bind, publish and consume. I ran into a segfault when I tried to
>> incorporate it into our framework, so there is still some debugging to do
>> there.
>> I will submit a patch to everyone later today, with the understanding that I
>> make no guarantees as to whether it is production ready.
>>
>> Pieter
>>
>>
>> On 2/9/10 3:00 AM, "Alexandre Kalendarev" <akalend at mail.ru> wrote:
>>
>>> Hi Dieter,
>>>
>>>> > thank you for your reply. Am I right, the module does not support
>>>> > consuming messages?
>>>
>>> The module is support Consume and Get methods. But Consume
>>> methods is sync and GET is async.
>>>
>>> If You use the the consume in the WEB pages, the HTTP protocol is async and
>>> You can't wait if you have not commet technology.
>>> My recomendation is use the series of GET method:
>>>
>>> // get queue items
>>> $queue = new AMQPQueue(APMQConection(), 'my_queue');
>>> $i=0;
>>> $res = true;
>>> while ($res = $queue->get() !== false ){
>>> $i++;
>>> echo "$i : {$res['msg']}<br>\n";
>>> }
>>>
>>> But, You can use the Consume, You must the read queue lenght and make
>>> Consume of len messages.
>>> It is guarantie of absent waiting new messages.
>>>
>>>
>>> // consume
>>> $i=0;
>>> $queue = new AMQPQueue(APMQConection());
>>>
>>> $n = $queue->declare('my_queue'); // we get the lenght of queue
>>>
>>> $queueMessages = $queue->consume( $n ); // we reading $n messages, all
>>> queue.
>>> foreach($queueMessages as $item){
>>> $i++;
>>> echo "$i.$item";
>>> }
>>>
>>> If $n less lenght of queue, the all nonreaded messages will be gone.
>>>
>>> The Consume method is faster.
>>>
>>>> >Or Am i mixing up the Modules?
>>> the module php-amqp http://code.google.com/p/php-amqp/ don't support
>>> consume, bind and queue. It is only publish.
>>>
>>> If You have any questions send me, I will very happeness ask You. Sorry for
>>> my English.
>>>
>>> Alexandre
>>>
>>> _______________________________________________
>>> rabbitmq-discuss mailing list
>>> rabbitmq-discuss at lists.rabbitmq.com
>>> http://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
>>>
--
the rubicon project
PIETER DE ZWART | INTERFACES ENGINEER
P 310 207 0272 | x224
F 323 466 7119
1925 S. BUNDY DRIVE
LOS ANGELES, CALIFORNIA 90025
WWW.RUBICONPROJECT.COM <http://www.rubiconproject.com/>
³COMPANY OF THE YEAR² ALWAYSON ONMEDIA 2009
#24 ON FAST COMPANY FAST 50 READER FAVORITES
2008 ALWAYSON 250 GLOBAL WINNER
2008 ALWAYSON ONMEDIA 100 WINNER
TWIISTUP3 BEST IN SHOW
PRICEWATERHOUSECOOPERS ENTRETECH BEST STARTUP
AMERICAN BUSINESS AWARDS - STEVIES 08 FINALIST BEST NEW COMPANY
AMERICAN BUSINESS AWARDS - STEVIES 08 FINALIST MOST INNOVATIVE COMPANY
AMERICAN BUSINESS AWARDS - STEVIES 08 FINALIST NEW PRODUCT OR SERVICE -
SERVICES
P Please consider the environment before printing this e-mail
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20100209/d519a21e/attachment.htm
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/png
Size: 28320 bytes
Desc: not available
Url : http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20100209/d519a21e/attachment.png
-------------- next part --------------
A non-text attachment was scrubbed...
Name: queue_get.patch
Type: application/octet-stream
Size: 436 bytes
Desc: not available
Url : http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20100209/d519a21e/attachment.obj
More information about the rabbitmq-discuss
mailing list