<p>Am 15.03.2012 10:30 schrieb "justin" <<a href="mailto:nginx-forum@nginx.us">nginx-forum@nginx.us</a>>:<br>
><br>
> Ok, so I've got a crazy idea, but it might just work.<br>
><br>
> Basically, we have a bunch of PHP pools managed with PHP-FPM. Each site<br>
> has its own single PHP-FPM worker for security reasons.<br>
><br>
> The majority of the sites don't get much traffic, so the PHP processes<br>
> don't need to be running eating up RAM and resources. My thought was<br>
> after N number of minutes of no requests to shut down that PHP worker<br>
> for that site. Then when a request comes in, hold the request in sort-of<br>
> a pause mode, start the worker for that site, and then forward off the<br>
> request. Sure there would be a slight delay on that first request to<br>
> spin up the worker, but should work beautifully.<br>
><br>
> Does nginx have any plugins to emulate this behavior? I.E. sort of<br>
> hooks? All I would need is a hook from nginx when a site is idle for X<br>
> number of second/minutes. For this first hook, we could write a simple<br>
> bash script which kills that PHP-FPM worker. Then another hook, when a<br>
> request comes in on a given site. Again, another bash script which first<br>
> checks if the PHP-FPM worker is up, if not, holds the requests, starts<br>
> the worker, and then forwards the request.<br>
><br>
> I was thinking at first, I can use node.js and write a middleware proxy<br>
> that sits between nginx and the PHP-FPM workers, but then quickly<br>
> realized the node.js app would have to speak cgi, and I didn't want to<br>
> have to deal with that rubbish. :)</p>
<p>What you're looking for is php-fpm with 0 initial worker. I'm not sure how far its current progress but you should try asking php folks. In the meantime you can config the pool to start with only one inital worker.</p>