2011-09-06 24 views
7

私はCodeIgniterで構築されたサイトでcronジョブを実行しようとしています - 私はCPanelを使用してcronジョブをセットアップする最良の方法を誰にも提案できる、CPanel cron機能にアクセスできますか?codeigniterのCronジョブ

私はCodIgniterを使用していますので、cronジョブ内でコントローラを呼び出す方法がわからないのですか?

例えばhttp://admin.com/sites/publish/

どのように私はこれがcronジョブを使用しているサイトコントローラ内の機能を公開アクセスのでしょうか?

答えて

9

ベストな方法は、あなたがhereを参照してください、CIにコマンドラインを介してコントローラを実行することができます... cronジョブでコマンドラインから呼び出すことが

php /path/to/index.php controller >> /dev/null 

です。私にとって

+0

はこれが私の目的のために正しいだろうあなたは思いますか? php /home/username/public_html/index.php/sites/publish >>/dev/null – Zabs

+2

+1私からは、私はちょうどあなたが与えたパスと質問に基づいて追加します 'php/path "/ dev/null'を公開しています(私が明確にしたいと思っていただけの例を実現しています) – simnom

+0

こんにちは、もう一度試してみましたが、cronが動作していますが、私に送ってください。 NBコントローラがサイトと呼ばれている&機能はcronを /binに/ shが呼び出されます。/home/username/public_html/index.php/sites/publish:未ディレクトリ – Zabs

5

これはカールを使用していることとcronでURLを実行する簡単な方法:URLを確保する必要がある場合は、使用してポストを介してデータを送ることができ

curl http://admin.com/sites/publish/ 

curl -X POST -d "apikey=yourapikey&another=variable" http://admin.com/sites/publish/ 

この方法では、PHPのパラメータとさまざまな設定で戦う必要はありません。

+0

に更新しました。あなたはあなたのcronジョブを全世界に公開しています – Peacemoon

+0

あなたはhtpasswdを使ってそれらを保護することができます。私はそれがカールの代わりにPHPを使用することがより安全だと知っていますが、いくつかの愚かなものについては、この方法が簡単です。 – juanrossi

2

私はこのような方法を行う、 は、他の人のように、コントローラのCronを作りますが、追加コンテンツ

<? $_SERVER["SCRIPT_URL"] = "/controllerName/MethodName"; // you can set url in routes if you want 
    $_SERVER["HTTP_HOST"] = "your_site_address.com"; // without http://www 
    require(dirname(__FILE__) . "/../public/index.php"); // path to index.php 
?> 

各cronジョブの/cron/my_task.php用フォルダのcron

/application 
/cron 
    my_task.php 
/public 

メイクスクリプトを作成します__construct内のIPでの検証

cronジョブのために
1

コマンド・ライン・コントローラ、機能とのparamsにアクセスするには、この方法を試してください。

php index.php/controller/function/param1/param2/param3 etc 

または

php index.php controller function param1 param2 param3 etc