私はphpとcodeigniterフレームワークを使用しているプロジェクトに参加しています。3か月ごとにデータベースを変更したい。問題は、PHPでそれを行う方法がわからないことです。ユーザーがページにアクセスしたときに機能をアクティブ化できますが、特定の日付に自己実行させたいです。
5 に答える
スクリプトをPHPでコーディングし、CRONで実行できます(UNIX / LINUX環境でアプリケーションをホストしている場合)。
これは、 CRONを使用して自動PHP実行を行う方法を説明するWebサイトです。
これを行うcronジョブ(unix)またはスケジュールされたタスク(windows)を設定する必要があります。
ユーザーがページをヒットしてスケジュールされたタスクを実行することに依存することは、非常に悪い習慣です。
cronにアクセスできない場合は、メインページにコードを配置して、すべての訪問者の日付を確認し、現在の日付がモジュロ条件に準拠している場合は必要なタスクを実行できます。
cronジョブを設定し、独自のブートストラップファイルを作成します(このファイルを呼び出して、クラスとメソッドをコマンドラインパラメーターとして渡します。
これはそれを行うための迅速で汚い方法です(完全にテストされていません)
// usage: php cmd.php users/cron
if (php_sapi_name() != 'cli' || count($argv) != 2) {
exit('Not enough params');
}
// Fake REQUEST_URI
$_SERVER['REQUEST_URI'] = $argv[1];
// include the index bootstrap file
require 'index.php';
ファイルにcmd.phpという名前を付け、毎月実行するcronジョブを設定します。
利用方法:
cd root/to/directory && php cmd.php users/prune
これはテストされていない例ですが、正しい方向を示す必要があります:)
クローラーがヒットしたインデックス付きページがある場合は、実際にはcronを使用する必要はありません。サーバーログを確認してください。たとえば、月に1回タスクを実行する必要がある場合は、翌月をテキストファイルに保存し、一致したときにタスクを実行します。これを、クローラーが常にヒットすることがわかっているページに配置します。月が変わると、スクリプトがトリガーされます。