如何在cloudControl PaaS上的本地文件上运行cronjobs?

如何在cloudControl PaaS上的本地文件上运行cronjobs?,cron,worker,cloudcontrol,Cron,Worker,Cloudcontrol,在cloudControl上,我既可以运行,也可以运行 如果我想定期执行本地任务(我不想打电话给可公开访问的网站),该怎么办 我看到了可能的解决办法: 根据, “cloudControl上的cronjobs是对指定URL的定期调用。” 因此,在本地调用该文件是不可能的(?)。所以我必须创建一个可以通过URL调用的页面。如果客户机在本地主机(=服务器)上,我必须执行检查——我希望避免这种情况 我让workersleep()等待所需的时间,然后让它重新运行 // do some arbitrary

在cloudControl上,我既可以运行,也可以运行

如果我想定期执行本地任务(我不想打电话给可公开访问的网站),该怎么办

我看到了可能的解决办法:

  • 根据,

    “cloudControl上的cronjobs是对指定URL的定期调用。”

    因此,在本地调用该文件是不可能的(?)。所以我必须创建一个可以通过URL调用的页面。如果客户机在本地主机(=服务器)上,我必须执行检查——我希望避免这种情况

  • 我让worker
    sleep()
    等待所需的时间,然后让它重新运行

    // do some arbitrary action
    Foo::doSomeAction();
    
    // e.g. sleep 1 day
    sleep(86400);
    
    // restart worker
    exit(2);
    
  • 推荐哪一种?

    (或者:我可以简单地通过cron调用本地文件吗?

    第一个选项是不可能的,因为url请求是从单独的Web服务发出的。 您可以在cron任务中使用HTTP身份验证,但是worker解决方案也是完全有效的


    请记住,worker可以迁移到不同的服务器(在软件更新或硬件故障的情况下),因此do SomeAction()每天可能会执行一次以上。

    此外,您可以始终使用cron附加组件触发http请求,并使用它通过API启动worker。关于工作进程重启,如果工作进程因节点故障等原因重启,它将保留相同的工作进程id。该工作进程id在环境中可用。您可以使用它来实现锁定机制,例如,如果任务从未运行过一次,那么这一点很重要。您是否有任何文档或方法可用于这些场景?