[rabbitmq-discuss] How can I set socket timeouts in PHP using the AMQP PHP extension?

Robin Harvey harvey.robin at gmail.com
Wed Jun 29 09:08:33 BST 2011


BTW, Gavin, on this point:

> iirc the existing implementations do not have connection pooling

I've recently updated amqphp so that you can manage multiple connections at
the same time, so for example you can connect to and consume from 2 or more
different brokers at the same time.  There's a demo here:

https://github.com/BraveSirRobin/amqphp/blob/master/demos/demo-multi-consumer.php

Thanks,
--Robin

On Wed, Jun 29, 2011 at 4:08 AM, Gavin M. Roy <gmr at myyearbook.com> wrote:

> While not directly related to your question and you've not specified your
> use case, I have found trying to use native AMQP drivers in my PHP
> application as having too much overhead for connection management and iirc
> the existing implementations do not have connection pooling. This means lots
> of startup time and overhead on every request. To get around this we created
> a HTTP library that talks to the RabbitMQ JSON RPC Channel plugin. If all
> you are doing is publishing, you might want to check out VorpalBunny:
> https://github.com/myyearbook/VorpalBunny/
> As far as the underlying implementation, it's worth noting that the
> rabbitmq-c library is considered experimental. While we use it in our C
> applications in production, I can't say that we use the PHP extension on top
> of it. The PHP site has fatal errors for me right now so I can't look up to
> see which PHP extension the code is based on, otherwise I'd poke into the
> code and let you know if there are any timeout settings.
> Gavin
> On Tuesday, June 28, 2011 at 6:44 PM, Keith Krueger wrote:
> > I am using the PHP AMQP extension, as described here:
> >
> > http://php.net/manual/en/book.amqp.php
> >
> > This PHP extension uses the rabbitmq-c library as its underlying
> implementation.
> >
> > I would like to set socket timeouts for connection establishment and for
> each of my enqueues and dequeues. I want to do this in case our server
> performance degrades, to allow the clients to fail quickly rather than hang.
> >
> > Does anyone have experience doing this in a PHP environment? I have tried
> setting the PHP socket timeout as follows.
> >
> >  ini_set('default_socket_timeout', 5);
> >
> > This appears to have no impact on the PHP extension's timeout settings. I
> am still able to enqueue a multi-megabyte MQ message to rabbitmq without
> losing the socket connection. It takes about 75 seconds to enqueue this
> message, but the socket is kept open the entire time.
> >
> > Is there any support either in the PHP AMQP extension or in a different
> PHP setting that I can use to reduce the timeouts for our interactions with
> RabbitMQ? I'd rather not live with a potential problem of hanging client
> processes if I can avoid it.
> >
> > Thanks,
> >
> > -Keith
> >
> > _______________________________________________
> > rabbitmq-discuss mailing list
> > rabbitmq-discuss at lists.rabbitmq.com (mailto:
> rabbitmq-discuss at lists.rabbitmq.com)
> > https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
>
>
> _______________________________________________
> 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/20110629/620f929c/attachment.htm>


More information about the rabbitmq-discuss mailing list