代码之家  ›  专栏  ›  技术社区  ›  dropson

让一个PHP脚本循环永远从队列系统执行计算作业

  •  4
  • dropson  · 技术社区  · 16 年前

    目前,我有一个Perl脚本,它永远运行在我的服务器上,检查一个SQS以获取要计算的数据。这个脚本已经运行了6个月了,没有任何问题。

    所以,现在我想切换到php的cli,让脚本循环永远存在。主要是因为我对PHP比较熟悉。

    基本上,

    $i="forever";
    while($i==="forever"){
        doSomething();
        sleep(10);
    }
    

    该脚本将执行shell_exec(“/shell_script.sh”),这可能需要2小时才能处理。这会触发最长执行时间还是类似的时间?

    这“可以”吗?如果没有,有什么选择?

    5 回复  |  直到 14 年前
        1
  •  6
  •   Rich Adams    16 年前

    您需要确保将脚本的最大执行时间设置为零,这样就不会施加时间限制。您可以从php文件中使用,

    set_time_limit(0);
    

    也可以在php.ini文件中进行设置。(参见PHP手册 set_time_limit 更多信息)。除此之外,您的方法应该可以很好地工作。

    但是,不需要设置一个变量并检查它来永远循环,

    $i="forever";
    while($i==="forever")
    

    你可以简单地做 while(true) 或 while(1) .

        2
  •  5
  •   Justin Ethier    16 年前

    就个人而言,我将使用python或perl来完成这样的任务。对于编写网站和服务,PHP实际上更像是一种特定于域的语言。

        3
  •  3
  •   Stefan Gehrig    16 年前

    只是旁注,其他人建议通过 set_time_limit :

    因为使用的可能性无穷 PHP在shell环境中,最大 执行时间已设置为 无限的。鉴于应用 为网络编写的文件经常被执行 很快,shell应用程序 有更长的执行时间。

    Using PHP from the command line & gt; Differences to other SAPIs

    因此,实际上在命令行上运行PHP脚本不会受到执行时间限制。

        4
  •  1
  •   Andree    16 年前

    我不太熟悉Unix,但我认为人们可以使用” cron “做日常工作。用您选择的脚本语言编写您的任务,并由cron定期执行。

        5
  •  0
  •   Community Mohan Dere    9 年前

    如果你只想做一个无穷无尽的循环,那么

    $i=1;
    while($i===1){
        doSomething();
        sleep(10);
    } 
    

    简单地说只要$I是1,脚本就会继续运行,$I就不会改变……唯一的问题是您可能有一个执行时间限制,所以如果您这样做了,那么使用这个或类似的方法

    for($i=1; $i<100; $i++){
        doSomething();
        sleep(10);
    } 
    header("Location: samepage.php:);
    

    编辑 忽视我的帖子 使用 Having a PHP script loop forever doing computing jobs from a queue system

    推荐文章