windows 使用 xxfpm 解决 php-cgi 进程自动关闭
windows 下 php-cgi 进程处理一定数量的访问后,就会自动关闭,由于没办法直接让 php-cgi 进程支持更多的访问数量,所以只能启动多个进程来满足需求。
xxfpm 是一个可执行程序,它能同时启动多个 php-cgi 进程,并且在任何一个进程关闭时,都会重新启动一个新的进程,始终保持一定数量的进程,这样,就无需手动创建,省去了很多麻烦。
xxfpm 需要 pthreadGC2.dll 的支持,如果没有,会报错。将 pthreadGC2.dll 放在 xxfpm 的 bin 目录下,即可启动 xxfpm。
经测试,支持Win32和Linux-x86平台。对于用php的人,有了这个东西来维护一定数量的进程,就能制服经常崩溃退出的php-cgi啦!!!
Usage: xxfpm path [-n number] [-i ip] [-p port]
Manage FastCGI processes.-n, --number number of processes to keep
-i, --ip ip address to bind
-p, --port port to bind, default is 8000
-u, --user start processes using specified linux user
-g, --group start processes using specified linux group
-r, --root change root direcotry for the processes
-h, --help output usage information and exit
-v, --version output version information and exit
第一个写得比较标准的终端应用程序,我是看了cygwin的里的一些源代码,然后学会了如何使用getopt,算是写得比较标准的,但是代码也不短。
使用例子:
xxfpm z:/php5/php-cgi.exe -n 5 -p 8080
有人问,如何给程序加入参数?这个不难,使用双引号即可,路径要用"/"而不用"\"。例如要指定php.ini的路径,可以用下面例子:
xxfpm "z:/php5/php-cgi.exe -c z:/php5/php.ini" -n 5 -i 127.0.0.1 -p 8080
如何维护进程:
Windows上使用CreateProcess创建进程,使用WaitForSingleObject等待进程结束;Linux上使用fork和 execl创建进程,使用waitpid等待进程结束。Linux的版本多了在创建子进程的时候可以设置进程限制,能够以受限用户方式来运行。
当进程管理器被关闭的时候,它所创建的所有子进程也必须被关闭。Windows上使用JobObject这个东西来把子进程与管理器的进程产生关 联,感谢iceboy提供的资料!Linux上通过捕捉关闭信号,然后给所有子进程发送SIGTERM来结束子进程。详见源代码!!!
windows 使用 xxfpm 解决 php-cgi 进程自动关闭的更多相关文章
- 解决关闭SSH进程CobaltStrike自动关闭
解决关闭SSH进程CobaltStrike自动关闭 0x0 那么为什么ssh一关闭,程序就不再运行了? 答:元凶:SIGHUP 信号 让我们来看看为什么关掉窗口/断开连接会使得正在运行的程序死掉. 在 ...
- mysql 在windows server下发生系统错误 1067, 进程意外终止的解决方法
mysql 在windows server下发生系统错误 1067, 进程意外终止,请检查系统盘下的windows目录下是否存在mysql的配置文件my.ini,如存在,将其删除或改名即可.
- windows上,任务管理器中,进程命令行太长怎么办
一.前言 在windows上,有时候需要查看进程命令行,但是有的进程的命令行太长了,很难看全 此时,可以使用下面的方法解决(红框改为自己要查看的进程即可): C:\Users\Gaoyu>wmi ...
- php-cgi和php-fpm,Windows环境下解决Nginx+php并发访问阻塞问题。
php-cgi 是运行php,php-fpm是守护php-cgi进程 nginx配置目录运行php location ~ \.php$ { ...
- Windows内核基础知识-8-监听进程、线程和模块
Windows内核基础知识-8-监听进程.线程和模块 Windows内核有一种强大的机制,可以在重大事件发送时得到通知,比如这里的进程.线程和模块加载通知. 本次采用链表+自动快速互斥体来实现内核的主 ...
- Windows 10:解决开机显示C:\WINDOWS\system32\config\systemprofile\Desktop不可用的方法
开机显示C:\WINDOWS\system32\config\systemprofile\Desktop不可用应该是不少网友都遇到过. 近日在使用Windows 10 Build 9926中,也出 ...
- 以&运行在后台的程序,关闭terminal后,相应进进程自动关闭
以&运行在后台的程序,关闭terminal后,相应进进程自动关闭
- Windows Phone中解决多模块多程序集之间相互循环引用的问题一种思路
Windows Phone中解决多模块多程序集之间相互循环引用的问题一种思路 那就是利用mvvmlight中的messager组件(可单独提取出),制作双向的一个消息发送.通过公共的类的定义,来传递数 ...
- Python3.6(windows系统)解决编码问题
Python3.6(windows系统)解决编码问题 1,py文件代码: import urllib.request url = "http://www.douban.com/" ...
随机推荐
- 【BZOJ-2142】礼物 拓展Lucas定理
2142: 礼物 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1313 Solved: 541[Submit][Status][Discuss] ...
- JAVA初学练手项目,学生管理系统
github地址:https://github.com/qscqesze/StudentManager 简单描述一下: UI层面用于接受用户的处理信息,然后移交给StudentDao去处理数据. 其中 ...
- MikroTik RouterOS安装chr授权到阿里云虚拟机(转)
CHR介绍 CHR(Cloud Hosted Router) 是用于在虚拟机上运行的 RouterOS 版本,它支持x86_64架构,支持大多数流行的虚拟化技术,如 VMWare, Hyper-V, ...
- Android四种Activity的加载模式
建议首先阅读下面两篇文章,这样才可以更好的理解Activity的加载模式: Android的进程,线程模型 http://www.cnblogs.com/ghj1976/archive/2011/04 ...
- Revit API切换三维视图
切换视图必须在事务结束之后,这个困惑了半天,记录一下. , , -));//斜视45度 ts.Commit(); //切换视图必须在事务结束后,否则会提 ...
- Docker 传奇之 dotCloud
2010年,几个大胡子年轻人在旧金山成立了一家做 PaaS 平台的公司,起名为「dotCloud」,这个名字让我想起了微软的「DotNet」. dotCloud 主要是基于 PaaS 平台为开发者或开 ...
- 一个button导致的慘案
Win8名存实亡,Win9未出已亡.Win10会如何呢? 微软于2014年北京时间10月1日凌晨在旧金山召开新品公布会,之前盛传所谓的"windows 9"变成了"Win ...
- 报错:System.Data.Entity.Validation.DbEntityValidationException: 对一个或多个实体的验证失败
使用MVC和EF,在保存数据的时候报错:System.Data.Entity.Validation.DbEntityValidationException: 对一个或多个实体的验证失败.有关详细信息, ...
- SQL Server 2008 安装教程
http://www.downcc.com/tech/4135.html 序列号:Developer: PTTFM-X467G-P7RH2-3Q6CG-4DMYB
- [SQLite][Error Code] 21 misuse
若使用SQLite API時,出現错误代码21(misuse),可能是你的SQLiteConnection同時打開(Open)了兩個相同的Data source,所造成的错误. 解決方法:检查代码 ...