14

我正在尝试使用 heroku 调度程序运行 php 脚本。我应该在 heroku 中的 $ 之后输入什么命令。我一直找不到文件。我已将要运行的文件传输到 heroku,但使用调度程序运行它时运气不佳。

4

2 回答 2

8

Heroku 上的默认 PHP buildpack 目前不支持 PHP CLI,因此您只能使用它来通过 Apache 提供 Web 请求,而不能用于 worker dynos 中的脚本。但是,如果您使用的是支持 CLI 的 PHP buildpack,这是可能的。

为了测试它,我对 PHP buildpack 进行了分叉,将 PHP 二进制文件换成了使用 CLI 支持编译的二进制文件,并将在 Heroku 上运行预定 PHP 作业的小演示放在一起。有关分步说明,请参阅项目的自述文件。要在现有应用程序上使用此分支,请将 buildpack 设置为:

$ heroku config:add BUILDPACK_URL=https://github.com/ryanbrainard/heroku-buildpack-php.git

请注意,release我的 fork 中的脚本设置了使用 justPATH解析php可执行文件,这与需要使用绝对路径的默认 buildpack 不同。/app/bin/phpphp

于 2013-02-04T02:31:48.980 回答
5

如何使用Heroku Scheduler运行 PHP 脚本?

测试和设置作业

具有目录结构并Procfile看起来像这样:

├─ Procfile
├─ web/
├── (your webfiles)
├─ worker/
└── myscript.php

Procfile

web: vendor/bin/heroku-php-apache2 web/
worker: php worker/myscript.php

然后你可以像这样从命令行测试你的工作人员:

heroku run worker

要安排作业,请进入Heroku Scheduler并以类似的方式添加作业,但没有heroku run段(否则您会收到bash: heroku: command not found错误),只需:

worker

或者,或者,直接:

php worker/myscript.php

检查工作

您可以在应用程序的日志中看到该作业。例如:

2017-09-01T14:19:37.397210+00:00 heroku[scheduler.9540]: Starting process with command `php worker/myscript.php` 

笔记

  • 中的worker名称Procfile可以设置为其他名称。例如:myworkermysuperduperscript等。
  • 我包括了一个web部分,但如果您想要的只是一个工作人员/后台服务并且不需要在网络上提供文件,那么它是可选的。

替代方案:如果出于某种原因,您希望对 URL 执行 GET/POST 请求,则可以使用Temporize Scheduler插件。

于 2017-09-01T15:26:31.317 回答