찾다
백엔드 개발PHP 문제PHP에서 타이머 효과를 구현하는 방법

PHP에는 JS의 setInterval 또는 setTimeout과 유사한 기본 타이머 관련 기능이 없습니다. 하지만 선언을 사용하는 등 다른 방법으로 이를 수행할 수 있습니다. 다음으로 에디터가 선언의 사용법을 소개하겠습니다

PHP에서 타이머 효과를 구현하는 방법

우선 어떻게 구현되는지 살펴보고 선언 표현식이 무엇인지 알아보겠습니다.

function do_tick($str = '')
{
    list($sec, $usec) = explode(' ', microtime());
    printf("[%.4f] Tick.%s\n", $sec + $usec, $str);
}
register_tick_function('do_tick');

do_tick('--start--');
declare (ticks = 1) {
    while (1) {
        sleep(1); // 这里,每执行一次就去调用一次do_tick()
    }
}

실행 후 1초마다 현재 시간을 출력하는 매우 간단한 코드입니다.

declare 구문은 다음과 같이 정의됩니다.

declare (directive)
    statemaent;
  • 선언 구조는 코드 조각의 실행 지침을 설정하는 데 사용됩니다.

  • 지시문 부분을 사용하면 선언 코드 세그먼트의 동작을 설정할 수 있습니다. 현재 알려진 명령은 틱과 인코딩 두 가지뿐입니다. 틱(클럭 주기)은 인터프리터가 선언 코드 세그먼트에서 N개의 시간 지정 하위 수준 명령문을 실행할 때마다 발생하는 이벤트입니다. N의 값은 선언의 지시문 부분에서 Ticks=N으로 지정됩니다. 각 Tick에서 발생하는 이벤트는 Register_tick_function()에 의해 지정됩니다. 여기서는 Tick의 사용만 연구합니다.

  • 위 코드에서 우리는 틱에 대한 do_tick() 메서드를 등록하기 위해 Register_tick_function()을 사용하고 선언은 틱=1을 지정합니다. 즉, 시간을 측정할 수 있는 하위 수준 명령문이 실행될 때마다 Register_tick_function()이 실행됩니다. 선언된 코드 블록의 while이 매번 반복될 때 1초 동안 일시 중지하는 sleep()이 있으며, 이 sleep()은 시간을 측정할 수 있는 저수준 명령문입니다.
  • 그러면 while()은 시간을 측정할 수 있는 저수준 명령문이 아닌가요? 물론 그렇지 않습니다. where와 if와 같은 조건부 판단은 시간을 정할 수 있는 낮은 수준의 진술이 아닙니다.

  • 모든 진술에 시간이 정해져 있는 것은 아닙니다. 일반적으로 조건식과 매개변수 표현식은 시간 제한이 없습니다.
  • 다음 예시를 통해 단계별로 선언을 실행하는 방법을 살펴보겠습니다.

    function test_tick()
    {
        static $i = 0;
        echo 'test_tick:' . $i++, PHP_EOL;
    }
    register_tick_function('test_tick');
    test_tick(); // test_tick:0
    
    $j = 0; 
    declare (ticks = 1) {
        $j++; // test_tick:1
    
        $j++; // test_tick: 2
        
        sleep(1); //  停1秒后,test_tick:3
    
        $j++; // test_tick:4
    
        if ($j == 3) { // 条件表达式,不会执行ticks
    
            echo "aa", PHP_EOL; // test_tick:5 \n   test_tick:6,PHP_EOL会计一次ticks
        }
    }
    
    // declare使用花括号后面所有代码无效果,作用域限定在花括号以内
    echo "bbb"; // 
    echo "ccc"; // 
    echo "ddd"; //
  • 댓글이 매우 자세해서 일일이 설명할 필요가 없습니다. 틱을 2로 설정하고 선언 아래의 명령문에 중괄호를 사용하지 않은 결과를 살펴보겠습니다.
function test_tick1() 
{
    static $i = 0;
    echo 'test_tick1:' . $i++, PHP_EOL;
}
register_tick_function('test_tick1');

$j = 0; // 此处不计时
declare (ticks = 2); 
$j++; // test_tick1:0 

$j++; 

sleep(1); //  停1秒后 test_tick1:1

$j++; 

$j++; // test_tick1:2

if ($j == 4) { // 条件表达式,不会执行ticks
    // echo "aa", PHP_EOL;
    echo "aa"; // test_tick:10,test_tick1不执行,没有跳两步,如果用了,PHP_EOL,那么算两步,会输出test_tick1:3
}

//  declare没有使用花括号将对后面所有代码起效果,如果是require或者include将不会对父页面后续内容进行处理
echo "bbb"; // test_tick1:3
echo "ccc";
echo "ddd"; // test_tick1:4

선언이 이를 정의하는 후속 코드에 영향을 미치는 것을 볼 수 있지만, 주의해야 할 점은 다음과 같습니다. 페이지에 포함된 세트가 있는 경우 상위 페이지의 후속 코드에는 영향을 미치지 않습니다. Ticks=2를 정의한 후, Register_tick_function()에 의해 등록된 함수 코드는 두 개의 하위 수준 타이머 코드 다음에 한 번 실행됩니다.

테스트 코드:

https://github.com/zhangyue0503/dev-blog/blob/master/php/201911/source/PHP%E6%B2%A1%E6%9C%89%E5%AE%9A%E6%97%B6%E5%99%A8%EF%BC%9F.php

추천 학습:

php 비디오 튜토리얼

위 내용은 PHP에서 타이머 효과를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 segmentfault에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
산과 기본 데이터베이스 : 차이 및 각각을 사용 해야하는시기.산과 기본 데이터베이스 : 차이 및 각각을 사용 해야하는시기.Mar 26, 2025 pm 04:19 PM

이 기사는 산 및 기본 데이터베이스 모델을 비교하여 특성과 적절한 사용 사례를 자세히 설명합니다. 산은 금융 및 전자 상거래 애플리케이션에 적합한 데이터 무결성 및 일관성을 우선시하는 반면 Base는 가용성 및

PHP 보안 파일 업로드 : 파일 관련 취약점 방지.PHP 보안 파일 업로드 : 파일 관련 취약점 방지.Mar 26, 2025 pm 04:18 PM

이 기사는 코드 주입과 같은 취약점을 방지하기 위해 PHP 파일 업로드 보안에 대해 설명합니다. 파일 유형 유효성 검증, 보안 저장 및 오류 처리에 중점을 두어 응용 프로그램 보안을 향상시킵니다.

PHP 입력 유효성 검증 : 모범 사례.PHP 입력 유효성 검증 : 모범 사례.Mar 26, 2025 pm 04:17 PM

기사는 내장 함수 사용, 화이트리스트 접근 방식 및 서버 측 유효성 검사와 같은 기술에 중점을 둔 보안을 향상시키기 위해 PHP 입력 유효성 검증에 대한 모범 사례를 논의합니다.

PHP API 요율 제한 : 구현 전략.PHP API 요율 제한 : 구현 전략.Mar 26, 2025 pm 04:16 PM

이 기사는 토큰 버킷 및 누출 된 버킷과 같은 알고리즘을 포함하여 PHP에서 API 요율 제한을 구현하고 Symfony/Rate-Limiter와 같은 라이브러리 사용 전략에 대해 설명합니다. 또한 모니터링, 동적 조정 요율 제한 및 손도 다룹니다.

PHP 비밀번호 해싱 : password_hash 및 password_verify.PHP 비밀번호 해싱 : password_hash 및 password_verify.Mar 26, 2025 pm 04:15 PM

이 기사에서는 PHP에서 암호를 보호하기 위해 PHP에서 Password_hash 및 Password_Verify 사용의 이점에 대해 설명합니다. 주요 주장은 이러한 기능이 자동 소금 생성, 강한 해싱 알고리즘 및 Secur를 통해 암호 보호를 향상 시킨다는 것입니다.

OWASP Top 10 PHP : 일반적인 취약점을 설명하고 완화하십시오.OWASP Top 10 PHP : 일반적인 취약점을 설명하고 완화하십시오.Mar 26, 2025 pm 04:13 PM

이 기사는 PHP 및 완화 전략의 OWASP Top 10 취약점에 대해 설명합니다. 주요 문제에는 PHP 응용 프로그램을 모니터링하고 보호하기위한 권장 도구가 포함 된 주입, 인증 파손 및 XSS가 포함됩니다.

PHP XSS 예방 : XSS로부터 보호하는 방법.PHP XSS 예방 : XSS로부터 보호하는 방법.Mar 26, 2025 pm 04:12 PM

이 기사는 PHP의 XSS 공격을 방지하기위한 전략, 입력 소독, 출력 인코딩 및 보안 향상 라이브러리 및 프레임 워크 사용에 중점을 둔 전략에 대해 설명합니다.

PHP 인터페이스 대 추상 클래스 : 각각을 사용할 때.PHP 인터페이스 대 추상 클래스 : 각각을 사용할 때.Mar 26, 2025 pm 04:11 PM

이 기사는 각각의 사용시기에 중점을 둔 PHP의 인터페이스 및 추상 클래스 사용에 대해 설명합니다. 인터페이스는 관련없는 클래스 및 다중 상속에 적합한 구현없이 계약을 정의합니다. 초록 클래스는 일반적인 기능을 제공합니다

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.