建议使用FastCGI作为连接PHP和Lightpd的SAPI模块。在php-cgi中自动启用FastCGI。
使Lightpd生成php进程
为了将Lightpd配置成连接到PHP以生成FastCGI过程,lighttpd。编辑conf。建议使用套接字本地连接到FastCGI进程。
例1 lighttpd.conf的一部分
server.modules += ( "mod_fastcgi" ) fastcgi.server = ( ".php" => (( "socket" => "/tmp/php.socket", "bin-path" => "/usr/local/bin/php-cgi", "bin-environment" => ( "PHP_FCGI_CHILDREN" => "16", "PHP_FCGI_MAX_REQUESTS" => "10000" ), "min-procs" => 1, "max-procs" => 1, "idle-timeout" => 20 )) )
bin-path指令允许lighttpd动态生成FastCGI进程。PHP等于PHP_FCGI_基于CHILDREN环境变量生成子进程。bin-environment指令设置要生成的环境。PHP等于PHP_FCGI_MAX_如果达到REQUESTS中指定的请求数,则强制终止子进程。通常,PHP中请不要使用min-procs及max-procs指令。PHP本身管理其子进程,APC等操作码高速缓存仅在PHP管理下的子进程之间共享。min-procs被设定为大于1的值时,PHP转换器的总数在该值中为PHP_FCGI_乘以CHILDREN(例如,如果min-procs为2,PHP_FCGI_CHILDREN为16,则转换器为32个)。
通过spawn-fcgi生成进程
Lighttpd提供一个称为spawn-fcgi的程序来简化生成FastCGI过程的过程。
生成php-cgi
可以在没有spawn-fcgi的情况下生成进程,但需要做一些工作。PHP_FCGI_设置CHILDREN环境变量将控制PHP为处理请求生成的子进程的数量。PHP_FCGI_MAX_设置REQUESTS将确定每个子进程的持续时间(关于请求的数量)。下面是一个简单的bash脚本,可以帮助生成无php应答器。
示例2生成FastCGI应答器
#!/bin/sh # Location of the php-cgi binary PHP=/usr/local/bin/php-cgi # PID File location PHP_PID=/tmp/php.pid # Binding to an address #FCGI_BIND_ADDRESS=10.0.1.1:10000 # Binding to a domain socket FCGI_BIND_ADDRESS=/tmp/php.sock PHP_FCGI_CHILDREN=16 PHP_FCGI_MAX_REQUESTS=10000 env -i PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS $PHP -b $FCGI_BIND_ADDRESS & echo $! > "$PHP_PID"
连接到远程FCGI实例
为了分发应用程序,可以在多台远程计算机上生成FastCGI实例。
示例3连接到远程php-fastcgi实例
fastcgi.server = ( ".php" => (( "host" => "10.0.0.2", "port" => 1030 ), ( "host" => "10.0.0.3", "port" => 1030 )) )