2012-03-02 25 views
0

可能性の重複:
What is the canonical way to determine commandline vs. http execution of a PHP script?PHPとcronジョブ

はcronジョブのためのPHPでいくつかの "条件付き" のタグがありますか?何をしたい:

if(cron_job_executing_this_php_file) 
{ 
do something 
} 
elseif($_SERVER['REMOTE_ADDR'] = "blah.bl.ah.bl") 
{ 
do something 
} 

は、私はこのような何かを行うことができますか?

+0

なぜあなたのcronジョブ用に別のPHPファイルを作成するだけではないのですか? –

+0

あなたのcrontabが$ _GET変数を送ることができるかもしれません\t 0 3 * * * sudo /usr/local/bin/myfile.php?cron=true –

+0

[Can PHP detect can detectそれがcronジョブかコマンドラインから実行されていれば?](http://stackoverflow.com/questions/190759/can-php-detect-if-its-run-from-a-cron-job-or-from) -the-command-line) – Leigh

答えて

2

php_sapi_name()を使用できます。 CGIやmod_phpよりもコマンドライン(cronを含むがこれに限定されない)とは異なる値を返さなければならない。

あなたがのcrontabの内部であなただけのあなたにPHPの呼び出しを引数を追加することができます
2

0 1 0 0 0 php myscript.php from_cron 

そして、スクリプトでそれのためのテストを:

foreach($argv as $value) 
    { 
     echo "$value\n"; 
    } 

それは$ SERVERのに依存するよりも安全ですスーパーグローバル。

2

はい!

次のように何かに置く場合:

if (isset($_SERVER['REQUEST_METHOD'])) { 
    // Do non-shell stuff here 
} else { 
    // Do shell stuff here 
} 
+0

REQUEST_METHODが設定されていれば、あなたのコメントを逆にして、シェル以外のものを行うべきだと思います。 – jpic

+0

jpicありがとうございます。 –

2

あなたはクーロンからPHPスクリプトに引数を渡すことができます。

何か

よう

01 04 1 1 1 /path/to/my/script.php "fromcron"

次に、あなたのscript.php尋ねることができます。

if($argv[1]=="fromcron")

インデックスエラーがあるかもしれないので、インデックス[1]に要素があることがわからない限り、$ argv [1]を要求しないでください。