cronジョブでcurlを使用するにはどうすればよいですか?


12

週に1度(同じサーバー上で)URLを呼び出すcronジョブをcpanelでセットアップする必要があります。私はwgetを使用するつもりでしたが、使用されている共有サーバーでこれが無効になっていることがわかりました。

wgetに代わるものはありますか?curlは使用できると聞きましたが、cronコマンドでそれを設定する方法がわかりません。

また、cronjobが完了時に何もしないようにするコマンドは何ですか?

どんなアイデアも大歓迎です!


1
wgetを使用できたらどうしますか?
user9517

wgetを無効にした場合にカールを許可するのはなぜですか?
-andol

@Iain-PHPスクリプトの処理が必要です
-davidhyland

@Andol-非常に良い質問です。それはちょうどそれがどのように
-davidhyland

回答:


19

wgetを使用する代わりに、curlは次のように機能します。

curl --silent http://domain.com/cron.php

wgetと同じように機能します。あなたが起動しているPHPファイルの場合、コマンドラインのPHPインタープリター経由で実行できない理由はありますか?

php -q /path/to/cron.php

ウェブサーバーリクエストでも同じで、多くの場合、ウェブサーバー/カール経由で呼び出されたときに特定のタイムアウト制限なしではるかに高速に動作します


そのようにcurlを呼び出すと、結果が標準出力に出力されます。wgetと同等に動作し、出力をURLに基​​づいてファイル名に保存する場合は、-remote-nameフラグも追加します。
-andol

--silentは、応答も出力もないことを意味しますか?
-davidhyland

1
また、コマンドラインからphpスクリプトを呼び出しても、必ずしも同じ結果が得られるとは限りません。異なる構成の可能性に加えて、異なるユーザーとしてそのように実行されるスクリプトの珍しいシナリオもあります。それはすべて設定に依存します。
-andol

さて、「curl --silent domain.com/script.php > / dev / null 2>&1」を使用して動作するようにしましたが、「curl -o --url domain.com/script.php」でも正常に動作します> / dev / null 2>&1 "違いは何ですか?
-davidhyland

1
最初のコマンドはすべての出力を/ dev / nullに送信し、2番目のコマンド-urlはスクリプトを実行しているユーザーのホームディレクトリで呼び出されるファイルを作成します。このファイルにはphpファイルの出力が含まれ、
user9517

6

カールが利用可能な場合は、次のようなものを試すことができます

1 1 * * 0  /usr/bin/curl --silent http://example.come/some.php &>/dev/null

これによりcurlは完全にサイレントになり、完了時にメールが届きません。


4
オプション--show-errorも使用することをお勧めします。そのため、通常の操作では表示されませんが、エラーが発生するとエラーになります。
エメリーノ

5

このパラメーターは転送に許可される最大時間を設定するため、-silentに加えて「-m」パラメーターを追加することをお勧めします。cronを1分ごとに呼び出し、スクリプトに2分かかると想像してください。これはサーバーの負荷などに悪影響を与える可能性があります。

1 1 * * 0  /usr/bin/curl -m 120 -s http://example.come/some.php &>/dev/null
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.