0

シェル アクセスしかできない cron ジョブを作成する必要があります。私はcPanelでそれを行う方法を知っていますが、これは1and1サーバー上にあるため、シェルを使用する必要があります.

1and1 FAQに従って crontab に新しい cron ジョブを追加する部分に到達しましたが、cron ジョブがまったく実行されていないため、何が間違っているのかわかりません。

これは私が通常cPanelに入れるものです:

0 8 * * 1 wget 'http://my_www_domain/googlefroogle.php?feed=fy_uy_tp&key=XXXXX3f7d1'

これは私のcrontabにあるものです:

0 8 * * 1 /usr/local/bin/php /homepages/XX/XXXXXXX/htdocs/googlefroogle.php?feed=fy_uy_tp&key=XXXXX3f7d1

私は何が欠けているか、間違っていますか? ところで、ブラウザに手動で URL を入力すると、すべて正常に動作するので、スクリプトは問題ないと確信しています。

4

5 に答える 5

1

私の知る限り、wget はどのサーバーの cron ジョブでも使用できるので、そのまま使用しても問題はありません。

さて、それがうまくいかない理由は、そのように GET パラメータを PHP ファイルに送信できるからです。PHP は別の方法でコマンド ラインを処理します。コマンドラインから PHP を使用する を参照してください。

そのため、php ファイルが URL から呼び出されたのか、コマンド ラインから呼び出されたのかを確認する必要があります (簡単です。php_sapi_nameを参照してください)。その場合は、コマンド ライン インターフェイスを使用してパラメーターを取得するか、スクリプトでパラメーターを定義します。

if (php_sapi_name() == 'cli') {
    if ($argc != 3) {
        die(sprintf('Usage: %s <feed> <key>', $argv[0]));
    }

    $feed = $argv[1];
    $key = $argv[2];
}else{
    $feed = isset($_GET['feed']) ? $_GET['feed'] : null ;
    $key = isset($_GET['key']) ? $_GET['key'] : null ;
}

次に、cronjob で次のようにスクリプトを呼び出す必要があります。

php -f file.php fy_uy_tp XXXXX3f7d1

スクリプトがコマンドラインから実行されている場合は、引数を変数として取得し、そうでない場合は、GET パラメーターが存在するかどうかを確認して使用します。

于 2012-07-09T20:59:21.287 に答える
0

試す

*/0 */8 * * */1 /usr/local/bin/php -f /homepages/XX...
于 2012-07-09T20:55:35.590 に答える
0

シェルは「file.php」ではなく「file.php?param=value」という名前のファイルを探しているため、そのようなパラメーターを含むファイルを実行することはできません。

パラメータが常に同じである場合は、スクリプトで強制的に設定できます。

<?php
    $_GET['feed'] = 'fy_uy_tp';
    $_GET['key']  = ...
    $_REQUEST = $_GET;

?>

次に、スクリプトが $_SERVER['REMOTE_ADDR'] などの他の変数を必要としないことを確認します。

于 2012-07-09T21:00:15.917 に答える
0

シェル経由で管理されたcrontabでcPanelの「コマンド」を引き続き使用できます。使用する

crontab -l

現在のcronジョブを一覧表示します。

crontab -e

crontab を編集するには、最小限のインストールで crontab を手動でインストールする必要があります。

于 2012-07-09T20:53:10.550 に答える
0

これらの回答はどれも私が必要なことをするのに役立たなかったので、crontabによって呼び出された次のphpファイルを使用することになりました:

$data = array('feed'=>'fy_uy_tp','key'=>'MY_KEY_HERE');
$url = http_build_query($data, '', '&');
$fullurl = 'http://www.MYSITE.com/googlefroogle.php?'.$url;

$ch = curl_init($fullurl);
$fp = fopen("MY_LOG_FILE.txt", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);
fclose($fp);

他の誰かが同様のものが必要な場合に備えて...また、これにはphp5が必要であることに注意してください。http_build_queryはphp4では機能しません

于 2012-08-25T16:34:02.150 に答える