データベースを操作して結果を保存するために PHP コード抽出プログラムを使用する必要がある場合。ユーザーがリクエストしたときにこのコードの実行をトリガーする方法の場合、明らかにユーザーの応答時間が長くなり、ユーザー エクスペリエンスに影響します。オペレーティング システムのスケジュールされたタスクを使用する場合、実行頻度も非常に高くなります。
簡単な例を示します:
<?php ignore_user_abort();//关闭浏览器仍然执行 set_time_limit(0);//让程序一直执行下去 $interval=3;//每隔一定时间运行 do{ $msg=date("Y-m-d H:i:s"); file_put_contents("log.log",$msg,FILE_APPEND);//记录日志 sleep($interval);//等待时间,进行下一次操作。 }while(true); ?>
プログラムは終了判定文を書かず、無限ループすることに注意してください。もちろん停止したい場合はApacheを再起動すれば無効になります。スケジュールされた実行を再度実行する場合は、このコードを再度実行します。
上記の簡単な例は、この原理を説明することができます。
つまり、上記の例については、いくつかの改善を加えることができます。
スクリプトを実行するにはスイッチが必要です。 while ループ中にスイッチ変数を含めるだけで実装できます。それから、次のように実現できます:
次の内容で外部からインポートされた変数ファイル switch.php を作成します:
<?php return 1;//1执行脚本 0退出执行脚本 ?> 改良脚本如下: <?php ignore_user_abort();//关闭浏览器后,继续执行php代码 set_time_limit(0);//程序执行时间无限制 $sleep_time = 5;//多长时间执行一次 $switch = include 'switch.php'; while($switch){ $switch = include 'switch.php'; $msg=date("Y-m-d H:i:s").$switch; file_put_contents("log.log",$msg,FILE_APPEND);//记录日志 sleep($sleep_time);//等待时间,进行下一次操作。 } exit(); ?>
おそらくサーバーが長時間応答する理由は以前はわかりませんでしたが、 2 つの例では、PHP ファイルが数秒ごとに変更されることがすでにわかっているため、その実装方法が解決策を見つけました。
関連する推奨事項:
以上がPHP ファイルは数秒ごとに実行することもできますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。