2012-02-22 19 views
0

Linuxにファイルから特定のメソッドを実行させる方法はありますか?cronjobを使用したPHPメソッドへのアクセス

10 * * * * /usr/bin/php /path/to/script.php 

しかし、私は私のscript.phpは異なる時間のためのいくつかの機能を保持したい:私はこのcronジョブを持っている瞬間

public function ten_mins() 
{ 
    $this->upkeep_function_1(); 
    $this->upkeep_function_2(); 
} 

public function daily() 
{ 
    $this->upkeen_function_3(); 
} 

私はので、wgetコマンドやカールを使用しないようにしたいです私は不要なTCP設定を避けたい。

私にできることはありますか?

答えて

4

あなたのスクリプトの中でそれらにgetopt()と行為を使用して、コマンドライン経由で引数を渡すことができます: PHPファイル

array(2) { 
    ["f"]=> 
    string(5) "value" 
    ["h"]=> 
    bool(false) 
} 
+0

5秒で私ビート:)「F」は、それの後にコロンを持っている理由を私は理解して –

+0

を'getopt()'の中で(これは必須のパラメータですが、どうして 'h:'ではなく 'hp:'になるのですか? – hohner

+1

@Jamie、 'php script.php -fvalue -pyetanothervalue -h'; - ? – TerryE

1

switchコマンドを使用して現在の日付と時刻を取得し、それに基づいて適切な関数を呼び出す方法はありますか?

1

スクリプトをいくつかのファイルに分割するか、コマンドラインオプション-rを使用してインラインでいくつかのコードを実行します。 PHPで上記のスクリプトを実行する

<?php 
$options = getopt("f:hp:"); 
var_dump($options); 

script.php -fvalue -hは、出力は以下となります。ここlink

2
10 * * * * /usr/bin/php /path/to/script.php ten_mins 

...

public function ten_mins() 
{ 
    $this->upkeep_function_1(); 
    $this->upkeep_function_2(); 
} 

public function daily() 
{ 
    $this->upkeen_function_3(); 
} 

$method = end($_SERVER['argv']); 
call_user_func($method); 

実際に、あなたの最初のコードでは、部品が欠けているように、あなたも、このようなメソッドを呼び出すことができますように見えるん:

call_user_func(array($object, $method)); 
+0

*しないでください*。誰かがそれを使用すると思われる場合でも、任意のコード実行は依然として有害である可能性があります。 –

+1

これについては、実際には1つのクラス内のメソッドに限定する方が少し良いです。 –

+0

真。有効なポイント。 –

関連する問題