PHP 编程/守护进程
外观
< PHP 编程
一个 守护进程 是一个在后台运行的应用程序,而不是直接由用户操作的。守护进程的例子有 Cron 和 MySQL.
使用 PHP 将进程守护化非常容易,需要使用包含 --enable-pcntl 编译的 PHP 4.1 或更高版本。
我们将从 set_time_limit(0) 开始,让我们的脚本无限期运行。接下来,我们使用 pcntl_fork() 分叉 PHP 进程。最后,我们使用 posix_setsid() 告诉子进程在后台作为会话首领运行。
<?
set_time_limit(0); // Remove time limit
if (pcntl_fork()) { // Fork process
print "Daemon running.";
} else {
$sid = posix_setsid(); // Make child process session leader
if ($sid < 0)
exit;
while (true) {
// Daemon script goes here
}
}
?>
while 语句中的代码将在后台运行,直到明确调用 exit 或 die。
虽然将脚本守护化可能很有用,但它并不适合所有脚本。如果一个脚本只需要在特定时间执行,它可以利用 Cron 进行计划执行。