3

cron からのみ php スクリプトを実行するにはどうすればよいですか? または、リクエストが cron からのものかどうかを確認することはできますか?

編集

パラメータを使用してphpファイルを呼び出そうとしています。しかし、それらのどれも機能しません:

php -q /home/domain/public_html/cronjob.php?i=a
php -q /home/domain/public_html/cronjob.php par1
php -q /home/domain/public_html/cronjob.php par1=a
php -q /home/domain/public_html/cronjob.php par1='a'

$_GET、$_SESSION、または $argv を使用できません。パラメータを使用してファイルを呼び出すにはどうすればよいですか?

4

4 に答える 4

9

スクリプトがWeb リクエストから呼び出されていないかどうかを確認する必要があるためにこれを求めている場合は、php_sapi_name関数を使用して呼び出しの方法を確認できます。それが cron ジョブの場合、関数はcliコマンドラインを示すものを返す必要があります。電話。ただし、cron ジョブと通常のコマンドライン呼び出しを区別するのには役立ちません。

また、cron ジョブとスクリプトのコマンドライン呼び出しを区別する必要がある場合は、スクリプトを実行しているユーザーを確認し、cron ジョブを実行しているユーザーと同じかどうかを確認できます。これは、たとえば *nix システムで、posix_getuidまたはposix_getlogin関数を使用して実行できます。

最後に、誰かが cron ジョブの所有者としてログインし、コマンド ラインからスクリプトを実行しているのではないかと心配している場合は、cron ジョブ用にシェルを持たない別のユーザーを使用する必要があります。

于 2013-05-22T22:29:55.520 に答える
1

cron ジョブで呼び出されたことを示すパラメーターをスクリプトに渡すことができます。質問を見てください: cron-jobs-calling-a-php-script-with-variables

于 2013-05-22T22:21:33.413 に答える
1

わかりました、私は解決策を見つけました。GET パラメータを使用して php ファイルを呼び出したい場合は、次のようにファイルを呼び出す必要があります。

php -q /home/domain/public_html/cronjob.php name=value

$_GET を使用して、php ファイルでこのデータを取得できます。

$_GET['name']

またはargv:

$argv[1]

パラメータを単に argb に渡したい場合:

php -q /home/domain/public_html/cronjob.php value

ウェブサイトで見つけた他の例は機能しませんが、これらはうまく機能します..

于 2013-05-23T02:05:09.903 に答える
1

cron_script と受信者スクリプトにのみ保存されている認証キーをスクリプトに渡すのはどうですか。呼び出し時に、受信側スクリプトで $_GET['auth_key'] を介して認証キーが送信されているかどうかを確認します。

のように: http://www.example.com/receiver_script.php?auth_key= "WhatEverYouWant"

于 2013-05-22T22:35:20.373 に答える