PHP ignore_user_abort() を使用してスケジュールされたタスク機能の実装
タスクのスケジュール機能を実現するには、ignore_user_abort() 関数を使用してユーザーの割り込みを無視し、スクリプトをバックグラウンドで実行し続けることができます。
計画されたタスクを実装する方法についての例として、ignore_user_abort() 関数の使用を紹介する。
<?php
// 设置脚本不会在用户断开连接后终止
ignore_user_abort(true);
// 设置脚本执行不会超时
set_time_limit(0);
// 模拟一个长时间运行的任务
for ($i = 1; $i <= 10; $i++) {
// 等待1秒钟
sleep(1);
// 打印计数器
echo "任务执行中... 第 " . $i . " 步\n";
}
// 任务执行完成后可以执行一些清理操作
echo "任务执行完成\n";
?>
上記の例では、まず ignore_user_abort(true) 関数を呼び出して、ユーザーの割り込みを無視します。そして set_time_limit(0) 関数を使って、スクリプトの実行がタイムアウトしないように設定します。
次に、長時間実行されるタスクをシミュレーションし、sleep(1) 関数を使用して1秒ごとにカウントを出力します。
最後に、タスクの完了後にクリーニング処理を実行できます。
PHP ファイルとして上記コードを保存して、Cron (Linux) やタスク スケジューラ (Windows) のようなツールを使用して PHP ファイルを定期的に実行することで、この機能を使用できます。
注意:ignore_user_abort() 関数はスクリプの最初にのみ呼び出し可能で、スクリプの途中での呼び出しは無効です。