跳转到内容

PHP 编程/守护进程

来自维基教科书,自由的教科书

一个 守护进程 是一个在后台运行的应用程序,而不是直接由用户操作的。守护进程的例子有 CronMySQL.

使用 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 语句中的代码将在后台运行,直到明确调用 exitdie

应用程序

[编辑 | 编辑源代码]

虽然将脚本守护化可能很有用,但它并不适合所有脚本。如果一个脚本只需要在特定时间执行,它可以利用 Cron 进行计划执行。


华夏公益教科书