OPENSHIFT PaaS 上的 CRON 作业

CRON job on OPENSHIFT PaaS

所以我想定期 运行 我的应用程序中的一个脚本 运行 在 openshift PaaS 上运行。我想定期从我的数据库中删除一些条目。 我已经安装了 CRON 墨盒,我已经放置了一个 bash 脚本,如下所示:

#!/bin/bash

php /erase.php

in .openshift/cron/minutely 每分钟应该 运行 一个脚本。我把 erase.php 放在我的 git 存储库的根文件夹中,所以我认为上面的代码没有错误。 我的 erase.php 看起来像这样:

<?php
try {
        $bdd = new PDO('mysql:host=127.*.***.*:****;dbname=track', '****', '*****');
    } catch(Exception $e) {
        exit('Unable to connect to db.');
    }

    $sql = "DELETE FROM table";
    $q = $bdd->prepare($sql);
    $q->execute();

?>

据我所知,上面的代码不会有任何问题。还有什么我想念的吗?

编辑: 问题已解决,在 bash 脚本中,路径必须如下所示: php$OPENSHIFT_REPO_DIR/erase.php

bash 脚本中的绝对路径似乎不正确。您的回购目录不是根目录。您可以使用 environment variables 指定 bash 脚本的绝对路径。由于 erase.php 在你的 repo 的根目录中,那将是:

php $OPENSHIFT_REPO_DIR/erase.php

如果您需要对作业本身进行故障排除,您应该在 ~/app-root/logs/cron_minutely.log 中看到 minutely cron 作业的错误日志。

如果 cron 作业看起来根本不是 运行,请确保您已将 Cron add-on cartridge 添加到您的应用程序并且您的 bash 脚本文件是可执行的,因为在评论中建议。