ホームページ  >  記事  >  バックエンド開発  >  PHP ファイルは数秒ごとに実行することもできます

PHP ファイルは数秒ごとに実行することもできます

小云云
小云云オリジナル
2017-11-11 11:50:043201ブラウズ

データベースを操作して結果を保存するために 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 &#39;switch.php&#39;;
    while($switch){
        $switch = include &#39;switch.php&#39;;
        $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 ファイル関数とディレクトリ関数を要約する

PHP ファイルアップロードクラスを共有する

以上がPHP ファイルは数秒ごとに実行することもできますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。