本文所列内容在DigitalOcean、 Linode和Vultr的VPS上面均测试通过。
PHP语言高效、简洁、跨平台,并且内置多种库,用来开发维护脚本甚至是后台服务还是很爽的,比Shell强大并且可以用Shell。昨天将一个程序的后台服务用php重写了,只有200行代码,中途遇到一些小故事,下面记录一下PHP-Cli做后台服务需要注意的。
1,设置不超时:set_time_limit(0);
2,需要连接mysql的时候,尽量在操作函数内进行mysql_connect,因为无法预知客户端连上来的时间,所以如果用公用连接,很容易因为超时被踢出
3,首行#!/usr/bin/env php则可以将php当作脚本直接运行
4,写入/etc/rc.local则可以直接开机启动,不需要很复杂的去搞rc.d,没那个必要
5,/root/svr.php&,后面加个&可以后台运行
6,/etc/rc.local如果中途语句出错,则后续语句不会运行,所以要调试好,这个问题折腾我一个多小时,真心没想到是这里问题。
7,@mysql_connect而不是mysql_connect,否则会遇到一个莫名其妙的错误,说什么库版本小于最低需求什么什么的。
8,如果有跟路径相关的,需要chdir(dirname(__FILE__));,这样才能找到正确路径,否则很容易跑到php执行文件的目录去
9,需要记录日志或者调试信息什么的话,尽量写文本文件,而echo/print这类会回显在shell里面,一方面因为你不可能长时间盯着而显得无意义,另一方面如果是单纯的顺序脚本,执行完就完事的话没所谓,如果是作为一个后台服务,则不应该用这类代码,因为失去了代码的初衷和功能。
10,作为后台服务,尽可能多try,因为一旦出错就会直接退出。