Dynamically Start/Stop FastCGI PHP Processes

justin nginx-forum at nginx.us
Thu Mar 15 03:30:14 UTC 2012

Ok, so I've got a crazy idea, but it might just work.

Basically, we have a bunch of PHP pools managed with PHP-FPM. Each site
has its own single PHP-FPM worker for security reasons.

The majority of the sites don't get much traffic, so the PHP processes
don't need to be running eating up RAM and resources. My thought was
after N number of minutes of no requests to shut down that PHP worker
for that site. Then when a request comes in, hold the request in sort-of
a pause mode, start the worker for that site, and then forward off the
request. Sure there would be a slight delay on that first request to
spin up the worker, but should work beautifully.

Does nginx have any plugins to emulate this behavior? I.E. sort of
hooks? All I would need is a hook from nginx when a site is idle for X
number of second/minutes. For this first hook, we could write a simple
bash script which kills that PHP-FPM worker. Then another hook, when a
request comes in on a given site. Again, another bash script which first
checks if the PHP-FPM worker is up, if not, holds the requests, starts
the worker, and then forwards the request.

I was thinking at first, I can use node.js and write a middleware proxy
that sits between nginx and the PHP-FPM workers, but then quickly
realized the node.js app would have to speak cgi, and I didn't want to
have to deal with that rubbish. :)

Posted at Nginx Forum: http://forum.nginx.org/read.php?2,223855,223855#msg-223855

More information about the nginx mailing list