httpを介して1つのファイルを読み取るphpスクリプトがあります(ファイルは他のドメインにあります)。Web サイトが更新されるたびにこのファイルに接続するのではなく、1 日に 1 回か 2 回だけこのファイルを読みたいと思います。 cronで行う以外に方法はありますか? スクリプト自体でこの動作をセットアップすることを好むため、cron を使用したくありません..柔軟であるため、毎回 cron をセットアップしなくてもどこでも使用できます。ありがとう
9 に答える
cronにアクセスできなかったとき、私は過去にこの種のことをしました:
$lastRunLog = '/path/to/lastrun.log';
if (file_exists($lastRunLog)) {
$lastRun = file_get_contents($lastRunLog);
if (time() - $lastRun >= 86400) {
//its been more than a day so run our external file
$cron = file_get_contents('http://example.com/external/file.php');
//update lastrun.log with current time
file_put_contents($lastRunLog, time());
}
}
cron を使用できない、または使用したくない場合は、ページがアクセスされたときにのみ更新してもかまいません。HTTP 要求の結果をキャッシュし、キャッシュが 1 日または選択した間隔よりも古い場合にのみ、ページの読み込みで更新することができます。
時間間隔でサイトにアクセスしたい場合は、Webベースのcronを使用することもでき ます。
データベース テーブルを使用することもできます。構造、ID、日付、スクリプトの URL など、必要なものはすべて単純で、スクリプトを実行するたびに行を追加できます。
次に、スクリプトを実行する前に、毎日の行数を確認します。
cron を使用したくないことを明示的に述べているため、これを行う唯一の他の方法 (cron に類似したものなし) は、スクリプトをデーモンとしてセットアップすることです。ただし、デーモンが提供する柔軟性が本当に必要でない限り、cron ははるかに簡単でシンプルです。
デーモンのウォークスルーの 1 つを次に示します。
Cronjobを使用できます。その後、コマンド ラインで php スクリプトを実行できます。
php /someplace/somefile.php
毎日更新すると、Cronjobは次のようになります。
0 0 * 0 0 php /someplace/somefile.php
cronの何が問題になっていますか?
cronにはいくつかの選択肢があります。phpはコマンドラインのPHPインタープリターで呼び出すことができます。または、wgetやfetchなどを使用して、サーバーでPHPを呼び出すこともできます。
一般に、Webサーバーのコンテキスト内から実行されるPHPには、実行できる時間に制限があるため、一般に、「後で」何かを実行するように「バックグラウンド」PHPスレッドを設定することはできません。
*nix 環境を使用している場合は、cron ジョブを使用できます