homeserver通过FastCGI协议与php-cgi进程进行通信来执行php脚本文件。
一直以来都发现php-cgi进程不是很稳定,可能是我在实现协议上有不当的地方。运行一段时间后,例如一两天,phpcgi进程就会自动结束,也不留下任何相关信息。
目前,我通过写批处理文件,在进程结束后自动建立新进程来临时解决这个问题。之前在windows上是写一个批处理文件,然后copy几万行执行命令,这样就相当于无止境地执行。
在Linux上做的更简单,可能是我不知道在windows的批处理里怎么写循环。
#!/bin/bash
while true
echo “Starting php server …”
php-cgi -b 127.0.0.1:8080
echo “Server exited. Restart it …t”
sleep 10s
done
为啥要sleep 10s呢?因为php-cgi进程异常结束了,socket还在占用着8080端口,如果不睡眠一下,那么会耗尽CPU资源,知道端口能够使用。这样可能导致日志文件的体积疯狂增长,直到硬盘资源枯竭而止。。。
windows的批处理 这样能吗
@echo off
:a
echo “Starting php server …”
php-cgi -b 127.0.0.1:8080
echo “Server exited. Restart it …t”
ping 127.0.0.1 -n 10>nul
goto :a
ping 127.0.0.1 -n 10>nul 为延时10秒左右
不是”*” 是 “>”
郁闷 大于号 没法输入 都变成了 “*”号
哇~~ 很好,原来Windows也有这么简单的实现方法,不过我发现不够Linux Bash上的美观、明了。
我在linux下把php打了php-fpm补丁,进程挂掉的情况还是没有见到,只是用homeserver来跑php,有时会出现空白。
请问ls,出现空白的时候,有没检查过是不是php挂掉了?
哈哈,小虾你的bat还没有我熟悉
呃。。。虽然用windows时间相当长,但是bat少接触,主要是不喜欢那种丑陋的语法。一般都会写C程序来代替bat文件。
php-cgi 是经常崩溃的。
嗯,还是fpm好一些。
fpm是啥玩意?好吃不?