August 
	   13th,
	   
	   2009
	 
	  
	  
		  
		  
		
		
      
      
    
    
		
		
	
	
	
如果使用fastcgi的方式启动php,php-cgi进程在运行一段时间之后会自动退出,然后父进程再拉起一个新的php-cgi提供服务。
lighttpd版本如为1.4,lighttpd提供了一个配置项指定php-cgi的退出条件: PHP_FCGI_MAX_REQUESTS, 指定php-cgi在处理多少个请求之后退出服务。
fastcgi.server = ( ".php" =>
  (( "socket" => "/tmp/php-fastcgi.socket",
     "bin-path" => "/usr/local/bin/php",
     "bin-environment" => ( 
       "PHP_FCGI_CHILDREN" => "16",
       "PHP_FCGI_MAX_REQUESTS" => "10000" 
     )
  ))
)
1.5的lighttpd里,由于spawn-fcgi被剥离出来,所以这个参数的指定就由spawn-fcgi完成,但spawn-fcgi实际上没有传递该参数给php-cgi进程,所以php-cgi使用PHP_FCGI_MAX_REQUESTS的默认值500。 spawn-fcgi只提供了php-cgi子进程个数的指定: <pre class=c name=code> if (child_count >= 0) { snprintf(cgi_childs, sizeof(cgi_childs), “PHP_FCGI_CHILDREN=%d”, child_count); putenv(cgi_childs); } </pre>
如果想指定PHP_FCGI_MAX_REQUESTS,可以模仿上面的代码修改spawn-fcgi.c,将PHP_FCGI_MAX_REQUESTS传递给php-cgi。
一些网站提到php-cgi进程数不宜过大,4G内存才能开到20个进程,但是据我观察1G内存开36个php-cgi是没问题的。