Xiaoxia[PG]

php-cgi莫名其妙的崩溃

Internet、Linux、我的生活11 条评论

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资源,知道端口能够使用。这样可能导致日志文件的体积疯狂增长,直到硬盘资源枯竭而止。。。

11 条评论

  1. 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秒左右

  2. 不是"*" 是 ">"

  3. 郁闷 大于号 没法输入 都变成了 "*"号

  4. 哇~~ 很好,原来Windows也有这么简单的实现方法,不过我发现不够Linux Bash上的美观、明了。

  5. 我在linux下把php打了php-fpm补丁,进程挂掉的情况还是没有见到,只是用homeserver来跑php,有时会出现空白。

  6. 请问ls,出现空白的时候,有没检查过是不是php挂掉了?

  7. 哈哈,小虾你的bat还没有我熟悉

  8. 呃。。。虽然用windows时间相当长,但是bat少接触,主要是不喜欢那种丑陋的语法。一般都会写C程序来代替bat文件。

  9. php-cgi 是经常崩溃的。

  10. 嗯,还是fpm好一些。

  11. fpm是啥玩意?好吃不?

发表评论

评论会经过自动审核,链接请勿超过 3 个。