前几天把工作平台从 Ubuntu 9.10 Karmic 更新到了 10.04 Lucid,由于 Lucid 官方源自带了 PHP5.3.2,以前使用的 dotdeb 的源就没法用了,一直很喜欢这个源的,不但提供了 PHP5.3 而且还有 php5-fpm 这个很实用的 fcgi 进程管理器,这个在官方源里面是没有的。强行上了 dotdeb 虽然也可以,不过必然有很多包会出现依赖问题,处理这些依赖关系是件很烦心的事情。哥啥都不怕,就怕麻烦~ :!:
对于 PHP 来说,php-fpm 还是最合适的,spawn-fcgi 这类东西就不用考虑了,我宁愿用 PHP5 内置的 FastCGI Server。
通过下面的命令启动服务器,监听 9000 端口:
php-cgi -q -b 127.0.0.1:9000 &
你需要设置两个环境变量:
PHP_FCGI_CHILDREN – 派生子进程的数量
PHP_FCGI_MAX_REQUESTS – 每个子进程所能处理的最大请求数
配合这两个环境变量,启动内置的 FastCGI Server,保证 PHP 能够派生出子进程来负责处理请求,而不是由主进程来做。否则就会出现上面说的情况,达到 500 以后,自动退出。
下面是一个简单的脚本:
#!/bin/bash ## 参考: ## ## http://php.net/manual/en/install.unix.lighttpd-14.php ## http://kovyrin.net/2006/05/30/nginx-php-fastcgi-howto ## ## php-cgi 的文件路径 PHPFCGI=`which php-cgi` ## PID 文件路径 PHP_PID="/tmp/php.pid" ## 绑定 TCP 地址 FCGI_BIND_ADDRESS="127.0.0.1:9000" ## 绑定到 Unix domain socket #FCGI_BIND_ADDRESS="/tmp/php.sock" ## 派生出多少个 PHP 子进程 ## 其中不包括主进程 PHP_FCGI_CHILDREN=16 ## 每个 PHP 进程处理的最大请求数 PHP_FCGI_MAX_REQUESTS=4096 ## 用户 USERID=verdana ################## no config below this line # 根据用户不同,切换启动命令 if test x$UID = x0; then CMD="/bin/su -m -c \"$PHPFCGI -q -b $FCGI_BIND_ADDRESS\" $USERID" else CMD="$PHPFCGI -b $FCGI_BIND_ADDRESS" fi echo $CMD # 相关的环境变量 E="PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS" # 忽略其他的环境变量,以一个干净的环境启动 nohup env - $E sh -c "$CMD" &> /dev/null & # 记录 PHP 主进程的 PID # $! 返回的是 sh 的 PID # 找到所有 php-cgi 进程中最小的 PID,就是主进程的 PID MASTER_PID=`ps -e | grep 'php-cgi' | sed -n '1p' | awk '{print $1}'` echo $MASTER_PID > "$PHP_PID"
如何关闭呢?
可以一次性杀灭所有的 php-cgi 进程:
ps -e | grep php-cgi | awk '{print $1}' | xargs kill
cat /tmp/php.pid | xargs kill
本文向大家介绍Shell实现的Oracle启动脚本分享,包括了Shell实现的Oracle启动脚本分享的使用技巧和注意事项,需要的朋友参考一下 Usage: sh oracled [start|stop|restart] SIDs 其中SIDs是数据库名,多个名称之间用逗号分隔。缺省的操作是 restart ,也可以指定需要进行的操作( start | stop | restart )
本文向大家介绍Shell脚本实现监控kingate并自动启动,包括了Shell脚本实现监控kingate并自动启动的使用技巧和注意事项,需要的朋友参考一下 自己在vps做的kingate服务端,估计最近占用流量太大了,老是被服务商把我vps重启,但kingate这个东西是一旦被强制结束掉,是无法开机启动的,因为要把kingate.pid这个文件删除了才能启动,好吧,对于我们这样的懒人来说,当然不能
本文向大家介绍CentOS下redis自启动shell脚本,包括了CentOS下redis自启动shell脚本的使用技巧和注意事项,需要的朋友参考一下 用这个脚本管理之前,需要先配置下面的内核参数,否则Redis脚本在重启或停止redis时,将会报错,并且不能自动在停止服务前同步数据到磁盘上: 然后应用生效: 然后增加服务并开机自启动: 脚本源码: 注意:请将脚本中redis的启动文件、配置文件和
问题内容: 我想从PHP脚本执行系统上存在的Bash脚本。我的系统上有两个脚本。其中一个是称为at at 的PHP脚本,另一个是称为at at 的Bash脚本。 我的client.php脚本看起来像 我的睾丸看起来像 当我在终端上执行以下操作时 我在终端上得到以下输出 但是当我在打开页面时 我得到以下输出 即使执行了chmod + x testscript,我仍然收到此错误。 我如何从浏览器中获取
本文向大家介绍Shell脚本实现ftok函数,包括了Shell脚本实现ftok函数的使用技巧和注意事项,需要的朋友参考一下 “古老的 Sys IPC 仍然有好几种有效的用途。三种 IPC 对象是共享内存,信号灯和消息。”当使用到 IPC 的这些对象时,你需要为每个对象创建一个 Key。虽然理论上来说我们在定义一个 IPC Key 的时候可以使用任意自己喜欢的 Key ,但为了避免与其他的程序产生定
用途:使用php将命令直接输入minecraft服务器控制台 我正在尝试使用php脚本(从浏览器运行)来执行shell脚本。当我从终端运行php时,它就可以工作了!但在浏览器中,什么都不会发生。 从终端运行时,我得到一个“数组0”,但浏览器给我一个“数组1” 问题是什么?一旦我运行了shell,之后的一切不应该像在终端上一样工作吗?(shell脚本内部的内容是否重要?) shell拥有所有rx权限
本文向大家介绍Shell脚本实现自动修改IP地址,包括了Shell脚本实现自动修改IP地址的使用技巧和注意事项,需要的朋友参考一下 作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名、ip信息、网关等配置。修改成特定的主机名在维护和管理方面也比较方便。如下脚本用途为:修改ip和主机名等相关信
本文向大家介绍Shell实现强制释放内存脚本分享,包括了Shell实现强制释放内存脚本分享的使用技巧和注意事项,需要的朋友参考一下 公司服务器最近两天老是因为内存被使用满而造成死机,实在是受不了老叫机房的人去帮忙重启,专门写了个脚本来释放下内存,当然这台服务器不是太重要,我粗鲁的处理方式估计不会适合大多数服务器,请大家使用之前先考虑清楚,不然造成数据丢失就不关我的事了. 脚本内容: cat che