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

Alvaro Videla videlalvaro at gmail.com
Wed Jun 29 16:21:46 BST 2011


I know there's function called pfsockopen or something like that. It might help to achieve persistent connections, but I haven't used it.

-Alvaro

Sent from my iFad

On Jun 29, 2011, at 4:56 PM, Robin Harvey <harvey.robin at gmail.com> wrote:

> OK, I understand.  AFAIK, there's no way to do that in PHP without writing an extension in C, is there?
> 
> 
> On Wed, Jun 29, 2011 at 2:47 PM, Gavin M. Roy <gmr at myyearbook.com> wrote:
> Cool, I meant persistent, such as with the mysql_pconnect or pgsql_pconnect.
> 
> Thanks for the work on amqphp, will look deeper at it for use in other areas. I'm glad there is an active, maintained client!
> 
> Gavin
> 
> 
> On Wed, Jun 29, 2011 at 4:08 AM, Robin Harvey <harvey.robin at gmail.com> wrote:
> 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
> 
> 
> 
> _______________________________________________
> 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/cb2cbf15/attachment.htm>


More information about the rabbitmq-discuss mailing list