首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AppFog上运行PHP

在AppFog上运行PHP
EN

Stack Overflow用户
提问于 2012-11-27 23:21:06
回答 2查看 2.7K关注 0票数 13

我找了又找又找,但没有找到任何资料。

有没有办法在?应用程序中运行 worker

我只找到了运行Ruby、Node.js和Python的说明,它们都是基于那些语言的框架的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-27 23:21:06

在自我修修补补之后,我找到了一个办法!

在您的php脚本中,您应该设置0的超时限制,并有一个无限循环,如下所示:

代码语言:javascript
复制
<?php
    set_time_limit(0);

    while (true) {
        print "blah\n";
        sleep(120);
    }

这段代码每2分钟打印一次“废话”。

要将其部署到AppFog,必须使用af控制台命令。这里最重要的是,当问到它是否是一个PHP应用程序时,要说它不使用

台阶

  1. 目录上的af push
  2. 如果没有,如果它猜到了应用程序的语言
  3. 选择独立的作为应用程序类型。
  4. 现在选择PHP
  5. 输入php index.php或您为应用程序主文件指定的任何名称。

如下所示:

代码语言:javascript
复制
D:\Users\Leonel\dev\app>af push
Would you like to deploy from the current directory? [Yn]:
Application Name: APP
Detected a PHP Application, is this correct? [Yn]: n
[...]
6: Standalone
[...]
Select Application Type: 6
Selected Standalone Application
[...]
5: php
[...]
Select Runtime: 5
Selected php
Start Command: php index.php
1: AWS US East - Virginia
[...]
Select Infrastructure: 1
Application Deployed URL [None]:
Memory reservation (128M, 256M, 512M, 1G, 2G) [128M]:
How many instances? [1]:
Bind existing services to 'APP'? [yN]:
Create services to bind to 'APP'? [yN]:
Would you like to save this configuration? [yN]:
Creating Application: OK
Uploading Application:
  Checking for available resources: OK
  Packing application: OK
  Uploading (0K): OK
Push Status: OK
Staging Application 'APP': OK
Starting Application 'APP': OK

D:\Users\Leonel\dev\APP>af logs APP
====> /logs/stdout.log <====

blah
blah

若干注记

  • 您需要创建一个单独的应用程序来执行后台任务,尽管这个应用程序可以绑定到其他应用程序的相同服务(例如数据库),或者这个应用程序可以curl到其他应用程序。只需确保它位于相同的可用区域。
  • af logs APP将为您提供工作人员的输出,因此您可以调试并检查是否一切正常。

就这样,希望能帮上忙。

票数 30
EN

Stack Overflow用户

发布于 2015-05-14 08:28:12

很好的解决方案。由于声誉不足,我无法发表评论,所以我正在修改原来的答案。

要使PHP伪crontab在指定的秒内启动,请在脚本开始时使用强制执行循环,如下所示:

代码语言:javascript
复制
<?php
    set_time_limit(0);

    // begin process at zero (00) second mark
    $cnt=0;
    while (true) {
      usleep(250000); // avoid excess looping
      if ( date('s',time()) == '00' ) {
        break;
      }
      if ( $cnt++ > 240 ) {
        break; // something has gone wrong...
      }
    }
    var_dump(date('s',time()));exit; // test/validate

    while (true) {
        print "blah\n";
        sleep(120);
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13595025

复制
相关文章

相似问题

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