# windows下的php-cgi自动崩溃？

* 抖音：[https://v.douyin.com/iLWatawr/](https://v.douyin.com/iLWatawr/)
* B站：[https://www.bilibili.com/video/BV1bK4y1B7Jd/](https://www.bilibili.com/video/BV1bK4y1B7Jd/)

前两天在部署一个比较旧的PP项目

而且呢他用了SQLServer数据库

所以为了方便

我就用了Windows服务器

但是呢我发现php-cgi在Windows里边

经常自己就崩溃

开始我还不知道咋回事

后来我在网上一搜

发现其实它这个CGI啊

默认工作了500次

它就会自动被kill掉

所以呢

我们可以通过这个变量来控制它

但是这里插一嘴啊

这个设置成0是在我看了一下changelog哈

它是在PHP 5.2.0版本之后才支持的

就说5.2.0版本之前它不支持

把这个变量设置成

好然后呢

我们回过头来

我们先试一下是不是500次自动kill掉

好！首先呢

我们先把这个PHP重启一下

（相当于重新记数嘛）

首先我们看一下这脚本

其实很简单啊

就启动起来

好启动起来之后呢

我这里写了一个脚本

我们请求他500次

大家看他确实是停了

然后呢我们来试一下这个变量

这个变量呢

可以在这个系统的设置里边设置

也可以直接在脚本里写哈

系统设置里边就在这了

我给大家大概先看一下

就在这个环境变量里边

在这里加

那我就直接写在脚本里吧

嗯在这

set

然后把它拿过来

等于我们先写少一点

比如10次

然后呢

我们试一下是不是10次它自己就停

启动起来

好我们还是用这个脚本啊

这个脚本还是500次

我们可以看出来是不是停了其实

大家看！第十次就停了

然后后边就比较慢了（因为php停了）

也就说这个脚本起作用了

那我们把它改成

我们再试一次

好没问题了

大家看没有停

但是呢

这样的话容易造成内存泄露嘛

所以呢网上还有一些其他方法

比如说之前有一位大佬

开源了一个这个xxfpm

他可以管理这个CGI的进程

那其实呢

还有另外一种方法

就是

我们把这个脚本放在一个死循环里

因为你有没有发现

他执行完这个脚本

其实在一个等待的状态

所以即使把它放到一个循环里

它也是卡在这的

等它kill掉之后呢

就会进入下一次循环

那这个脚本其实也简单哈

大家看在这里我起了个名叫deamon哈

然后呢

呃这里边我稍微做了一些隐藏

在这设了一个

然后呢循环

因为Windows里没有循环

所以用这种标签的方式

然后在这go to来实现一个循环效果

然后这个echo.

是为了让它输出一空行哈

然后这里加了一个时间打印

是为了我们能看出来

分别在什么时候它重启过哈

然后我们试一下

好大家看

这启动起来了

然后还是我们在这执行500次

OK没有停对吧

然后我们再执行

应该是再执行10次

它就会重启

打开它就会重启了
