2016-05-27 4 views
0

私は定期的に私のアプリケーションで開いているシフトPaaSで実行されているスクリプトを実行したいと思います。私は定期的に私のデータベースからいくつかのエントリを削除したいと思います。 私はCRONカートリッジをインストールしていると私はこのようになりますbashスクリプトを入れている:CRON job on OPENSHIFT PaaS

.openshiftで
#!/bin/bash 

php /erase.php 

/cronが/細かくこれは毎分スクリプトを実行する必要があります。私は私の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(); 

?> 

限り、私は上記のコードに何か問題があることはできません見ることができるよう: 私erase.phpは、このようになります。私は行方不明の何か他にありますか?

EDIT:bashスクリプトで絶対パスが正しいとは思えない PHPの$ OPENSHIFT_REPO_DIR/erase.php

+0

このコードを使って何が起こっていますか? –

+1

1.このコードではprepared statementを使用する必要はありません。 2.なぜこのコードにエラー処理とログを追加しようとしないのですか? – Shadow

+0

件数やメッセージが好きですか? –

答えて

1

: 問題は、パスは次のようにする必要がありbashスクリプトでは、解決されます。あなたのrepoディレクトリはルートではありません。 environment variablesを使用して、bashスクリプトへの絶対パスを指定することができます。 erase.phpはあなたのレポのルートであるとして、それは次のようになります。

php $OPENSHIFT_REPO_DIR/erase.php 

あなたはsshing into your app後、~/app-root/logs/cron_minutely.logminutely cronジョブのエラーログを確認する必要があり、あなたは仕事自体をトラブルシューティングする必要がありますする必要があります。

cronジョブがまったく実行されていない場合は、Cron add-on cartridgeがアプリケーションに追加されていること、コメントに示唆されているようにbashスクリプトファイルが実行可能であることを確認してください。

+0

答えをいただきありがとうございます。変更と報告が適用されます。しかし、本当に自分自身を実行可能にする必要がありますか?だからSSHと手動でそれをコンパイル?今、私は細かくフォルダに.shだけ持っています。 CRONジョブに関するopenshiftの指示では、手動でコンパイルすることについて何も言わない。 –

+0

そう、ええ、問題は道にあった。 openshiftのように見えるので、スクリプトを実行可能にする必要はありません。ご協力ありがとうございました! –

関連する問題