我的应用程序中有2个.php文件 - book.php和weather.php。我在/.openshift/cron/minutely中创建了一个名为“runscript”的文件。这个文件内容:
#!/bin/bash
php -f $OPENSHIFT_REPO_DIR/weather.php
这个脚本每分钟都会给我发消息,没关系。 然后我换成:
php -f $OPENSHIFT_REPO_DIR/book.php
这个脚本也必须向我发送消息,但没有任何东西在干扰。但是,如果我只是通过我的webbrowser运行此脚本(转到http://xxx-xxxxxxx.rhcloud.com/book.php),那么我收到了我的消息。这怎么可能?魔法?
答案 0 :(得分:0)
你错过了#!/bin/bash
部分吗?这需要运行shell脚本。
答案 1 :(得分:0)
为什么你的cron作业没有执行,请检查OpenShift上的cron日志。当你装入你的装备时,你可以在~/app-root/logs/cron_*.log
找到它们。
确保您的cron作业可以使用chmod
执行,并且有@bnaanaa所说的shebang行。同时检查您是否有.openshift/cron/minutely/jobs.{allow,deny}
个文件,因为它们可能导致cron跳过您的工作。 (有关详细信息,请参阅cron README。)
在你的cron作业工作之后,你可以摆脱包装脚本runscript
并让cron直接调用book.php
。为此,请将book.php
直接放入.openshift/cron/minutely
,将其设为可执行文件,然后将其添加到其中:
#!/usr/bin/env php
希望这有帮助。
答案 2 :(得分:0)
我使用openshift并执行带有cron的php文件。
#!/bin/bash
php ${OPENSHIFT_REPO_DIR}index.php
这通常会在第一时间执行脚本。但是没有产生输出。问题是,所有必需的php文件都无法加载,因为工作目录与Web服务器加载时的工作目录不同。在php脚本中设置工作directoy将防止此错误并使脚本完全可由cron执行。
这应该可以帮助一些人运行脚本。