PHP后台程序对LINUX信号的处理
2010-04-30 16:41
218 查看
PHP在运行的时候,直接kill掉,有肯能造成数据的丢失。幸好php模块,有针对signal的处理。
处理方式,首先检查有没有安装 PCNTL 模块
然后可以在一个包含文件中,添加以下代码
global $exitFlag;
$exitFlag = false;
// 增加linux信号量处理
if (DIRECTORY_SEPARATOR != '//') {
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP, "sig_handler");
pcntl_signal(SIGINT, "sig_handler");
}
// 信号处理函数
function sig_handler($signo)
{
global $exitFlag;
echo "signal handler.../n";
switch ($signo) {
case SIGTERM :
case SIGHUP :
case SIGINT :
$exitFlag = true;
break;
default :
// handle all other signals
}
}
最后一个注意点: 在你所运行的php主文件里,添加一行
declare(ticks = 1);
否则这个信号处理是不起作用的。
处理方式,首先检查有没有安装 PCNTL 模块
然后可以在一个包含文件中,添加以下代码
global $exitFlag;
$exitFlag = false;
// 增加linux信号量处理
if (DIRECTORY_SEPARATOR != '//') {
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP, "sig_handler");
pcntl_signal(SIGINT, "sig_handler");
}
// 信号处理函数
function sig_handler($signo)
{
global $exitFlag;
echo "signal handler.../n";
switch ($signo) {
case SIGTERM :
case SIGHUP :
case SIGINT :
$exitFlag = true;
break;
default :
// handle all other signals
}
}
最后一个注意点: 在你所运行的php主文件里,添加一行
declare(ticks = 1);
否则这个信号处理是不起作用的。
相关文章推荐
- Linux 有问必答:如何在Perl中捕捉并处理信号
- PHP系统编程--03.PHP进程信号处理
- linux中的信号处理
- linux下c/c++实例之四父检测子进程和信号处理
- Linux下信号通信实现A进程死循环输出A后被C进程处理输出C
- Linux 信号signal处理函数
- Linux 信号 signal 处理机制
- Linux系统编程--信号及信号处理(一)
- Linux头文件作用&信号signal处理函数
- linux中的信号处理(signal和alarm)
- Linux 多线程应用中编写安全的信号处理函数
- linux下的信号处理
- Linux平台php命令行程序处理管道数据的方法
- Linux 信号signal处理机制
- Linux系统编程——进程间通信:信号中断处理
- linux中的信号处理(signal和alarm)
- 将信号用作 Linux 调试工具--使用智能信号处理更快地寻找 bug
- LinuxC信号及信号处理(2)
- linux-信号处理
- Linux 多线程应用中如何编写安全的信号处理函数