首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP pcntl脚本-需要指导

PHP pcntl脚本-需要指导
EN

Stack Overflow用户
提问于 2011-10-18 13:57:39
回答 1查看 251关注 0票数 0

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

一次又一次地运行脚本,并暂停几秒钟。

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

代码语言:javascript
复制
/************************/
$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调用此脚本

代码语言:javascript
复制
nohup php /this/script.php "php /path/to/process.php" 10 -1

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

我的要求很简单:脚本应该一次又一次地启动,并有10秒的停顿。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-18 16:29:49

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

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

  • 守护进程,所以你不必纠结于与你无关的nohup)
  • multitasking,,所以你只需将并发进程设置为1
  • 重复运行,这样你就不必纠结于forking。

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

它很容易安装和设置,网站上有大量的文档可以让你上手。它至少值得快速查看一下,看看它是否会对你有所帮助。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7803012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档