【问题标题】:PHP Heroku background workers?PHP Heroku 后台工作者?
【发布时间】:2012-05-23 18:35:23
【问题描述】:

我正在使用 Heroku 运行 PHP 应用程序,我需要设置与外部 API 对话并写入我的数据库的后台工作程序,Heroku 有很多关于为 Ruby 而不是为 PHP 设置工作程序的信息。

这在 Heroku 上是否可以通过 PHP 轻松实现?

我从来没有处理过启动后台进程,而且我似乎找不到任何详细说明它的文档...

【问题讨论】:

    标签: php heroku background-process


    【解决方案1】:

    添加以下环境变量:

    # Add this config
    $ heroku config:add LD_LIBRARY_PATH=/app/php/ext:/app/apache/lib
    

    然后您可以将工作人员添加到您的 Procfile。

    worker: cd ~/www/ && ~/php/bin/php worker.php
    

    【讨论】:

    • 不高兴,我看到工作进程在启动时崩溃,为什么需要配置变量?查看 ruby​​ proc 文件,我看到诸如“worker: bundle exec stalk worker.php”之类的示例,它应该遵循这样的模式吗?
    • @cal 如果你运行heroku run bash,并尝试运行~/php/bin/php -i,你就会明白为什么需要LD_LIBRARY_PATH环境变量:/app/php/bin/php: error while loading shared libraries: libmcrypt.so.4: cannot open shared object file: No such file or directory
    • 顺便说一句,我和你@cal有同样的问题,但我很确定上面的答案是正确的。我尝试了一个 test.php 脚本,它只是 <?php echo "123"; ?>,它会回显 123 然后退出。不知道为什么在我自己的服务器上运行良好的 PHP 脚本只会在 Heroku 服务器上以状态码 0 退出。
    • 只是确保,但你也有一个网络进程,对吗? Heroku 希望您的进程之一绑定到端口 80。以下是如何在 php buildpack 中启动 apache 进程。 web: sh boot.sh
    • 这是一个非常有用的提示。为我工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    • 2011-07-29
    • 1970-01-01
    • 2011-10-30
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多