CodeIgniter で wget を使わずに cron ジョブを実行したいです。私はこのように使用しています:
*/1 * * * * wget http://assurance.com/controller/function
正常に動作しますが、wget を使用したくありません。
この CodeIgniter スクリプトを実行する別の方法はありますか?
次のようなものを試して使用できます。
* * * * * /usr/bin/php /pathToTheApp/controller/function
もちろん、これ/usr/bin/php
は PHP バイナリへのパスであり、CI アプリケーションへの絶対pathToTheApp
パスである必要があります。
ホストでローカル シェルにアクセスできる場合は、そこの crontab に追加します。
私は最近この正確なことをする必要があり、完全な解決策を見つけることができませんでした. そこで、ここで提供しようと思います。
コントローラーへのコマンドライン (CLI) 呼び出しを http にしたかったので、「bash シェル」を使用しました (注: ubuntu/linux サーバーを使用しています。
次の 3 つの主要部分があります。
cron 呼び出し
シェルスクリプト
コントローラー機能
クロン:
サーバー cli で、これを入力して crontab にアクセスします: crontab -e
次に、cron 呼び出しを追加します。* * * * * bash /path/to/script/test.sh
(注: サイトのルートに cron というフォルダーを作成したので、パスは次のようになります。
/var/www/website/cron/test.sh
シェルスクリプト:
作成したcronフォルダーに、「test.sh」というファイルを作成します
ファイルに次のように入力します。
#!/bin/bash
cd /path/to/site
/usr/bin/php index.php controller function
それでおしまい
cron ファイルを呼び出すタイマーを設定します シェルは CLI からコントローラーを呼び出します
セキュリティを強化するために、関数で $this->input->is_cli_request() を使用できるようになりました。
public function cronTest()
{
if($this->input->is_cli_request())
{
//code goes here;
}
}
これがあなたの時間を節約するのに役立つことを願っています、これは私が予想よりもずっと長くかかりました:)