【问题标题】:PHP pcntl script - need guidancePHP pcntl 脚本 - 需要指导
【发布时间】:2011-10-18 05:57:39
【问题描述】:

我正在做一个抓取项目,在应用程序的某个地方我需要这个功能

一次又一次地运行一个脚本,停顿几秒钟。

我尝试使用 pcntl 来完成这项工作。所以写了这个脚本

/************************/
$intra_sleep=10; // we're going to set the intra process launch sleep at 10 seconds
$task_process=null; // by default this is set to null -- do nothing
$loop_limit=0; // this is the number of times the loop shoul run -- if set to -1 look infinite number of times

if (isset($argv[1])) $task_process=$argv[1];
if (isset($argv[2])) $intra_sleep=$argv[2];
if (isset($argv[3])) $loop_limit=$argv[3];


for ($loop_count=0; $loop_limit==-1 ? true : $loop_count< $loop_limit; $loop_count++) 
{
  $pid= pcntl_fork();

   if ($pid == -1) 
   {
    die('MASTER: could not fork');
   } 
   else if ($pid==0) 
   {
     if ($task_process) 
     { 
       echo "Sleeping for  $intra_sleep Seconds\n"; 
       sleep($intra_sleep);
       echo "Launching Child \n\n"; 
       exec($task_process); // from here process script is being launched
     } 
     else 
     {
    echo "  CLONE: no task process defined -- doing nothing " . PHP_EOL;
     }
  } 
  else 
  {
     pcntl_waitpid($pid,$status);  
  } 


}

/*********************/

我是这样从 CLI 调用这个脚本的

nohup php /this/script.php "php /path/to/process.php" 10 -1

我希望 process.php 会以 10 秒的间隔一次又一次地启动。它正在按照我的预期工作,但是当我检查正在运行的进程时,有数千个正在运行的进程正在运行,由这个脚本启动。

我的要求很简单:脚本应该以 10 秒的 Pause 一次又一次地启动。

【问题讨论】:

    标签: php process pcntl


    【解决方案1】:

    如果您只想每隔 x 秒重复一次 PHP 脚本,那么您可以使用 Fat Controller 为您处理脚本的所有守护进程和运行,这样您就可以专注于 PHP 脚本中的业务逻辑。它是用 C 语言编写的,因此无论您在 PHP 脚本中做什么,它都非常稳定。

    它基本上提供了以下功能:

    • 守护进程,因此您不必乱用 nohup)
    • 多任务处理,在您的情况下不相关,因此您只需将并发进程设置为 1
    • 重复运行,因此您不必为分叉而烦恼。

    有很多功能可以处理 PHP 脚本中的错误和错误的长时间运行的脚本。

    安装和设置非常容易,网站上有大量文档可以帮助您入门。至少值得快速浏览一下,看看它是否对您有帮助。

    http://fat-controller.sourceforge.net/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-12
      • 2023-01-15
      • 2012-05-13
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 2013-05-23
      相关资源
      最近更新 更多