Heim >Backend-Entwicklung >PHP-Tutorial >Timer-Funktion mit PHP implementieren

Timer-Funktion mit PHP implementieren

WBOY
WBOYOriginal
2016-08-08 09:23:251249Durchsuche

Früher wusste ich nur, dass JS zum Implementieren der Timer-Funktion verwendet werden kann, und das war sehr praktisch. Während des heutigen Projekts musste ich jedoch einen bestimmten Teil davon implementieren Ich dachte, es wäre großartig, wenn ich die Timer-Funktion über PHP implementieren könnte. Deshalb habe ich online gesucht und festgestellt, dass ähnliche Funktionen durch die Verwendung der Funktion „ignore_user_abort()“ zusammen mit der Funktion „set_time_limit()“ und einer Endlosschleife erreicht werden können. Obwohl das Projekt diese Funktion am Ende nicht nutzte, empfand ich den potenziellen Nutzwert immer noch als sehr hoch. Daher habe ich später auf einige Informationen im Internet verwiesen und sie wie folgt zusammengestellt:

<?php
    // 1、范例代码:
    ignore_user_abort(true);  // 设置与客户机断开是否会终止脚本的执行。
    set_time_limit(0);        // 设置脚本超时时间,为0时不受时间限制
    ob_end_clean();           // 清空缓存
    ob_start();               // 开始缓冲数据
    while(1){
        echo str_repeat(" ",1024);  // 写满IE有默认的1k buffer
        ob_flush();                 // 将缓存中的数据压入队列
        flush();                    // 输出缓存队列中的数据
        echo "now time is ".date('h:i:s');  // 打印数据,其实是先将数据存入了缓存中
        usleep(1000000);            //延迟一秒(暂停一秒)
    }
    // 该段程序实现的功能是每隔一秒钟输出一次包含当前时间的字符串。

    // 2、说明:
    // 经过测试,范例结果中会出现不连续输出,如果要求实现连续、均匀的输出效果(如输出时间),则应设置缓存;为方便理解,提供相关函数作用说明如下:
    /*
    ①ignore_user_abort(bool):设置与客户机断开是否会终止脚本的执行。
    ②set_time_limit(int seconds)设置允许脚本运行的时间,单位为秒。参数值为0时不受限制。
    ③ob_end_clean():清除服务端缓存的数据
    ④ob_start():开启一个缓存(可嵌套)
    ⑤ob_flush():将缓存中的数据压入队列
    ⑥flush():输出缓存队列中的数据
    ⑦usleep(int m-seconds):以指定的微秒数延缓程序的执行。
    */
    // 注:
    // flush()和ob_flush()的正确顺序应是,先ob_flush()再flush(),不可弄混。
    // usleep()函数可替换成sleep()函数,不同之处在于sleep()的参数是秒。

Das Obige hat die Verwendung von PHP zur Implementierung der Timer-Funktion vorgestellt, einschließlich verschiedener Aspekte. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn