>백엔드 개발 >PHP 튜토리얼 >PHP의 선언 기능에 대한 자세한 설명

PHP의 선언 기능에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-06-24 15:20:085333검색

php의 declare 기능:

일반적인 사용법은 다음과 같습니다.
declar(ticks=1)을 예로 들어 보겠습니다. 이 문장에는 두 가지 주요 기능이 있습니다.
1. 1개의 하위 수준 명령문을 실행합니다. 단지 Register_tick_function()에 의해 등록된 function을 실행하세요.
php 코드 문장이 실행될 때마다(예: $num=1;) 등록된 틱 함수가 실행되는 것으로 대략적으로 이해할 수 있습니다.
한 가지 용도는 특정 코드 부분의 실행 시간을 제어하는 ​​것입니다. 예를 들어 다음 코드의 끝에는 데드 loop이 있지만 실행 시간은 5초를 초과하지 않습니다.
Run php timeout.php

<?php
declare(ticks=1);
// 开始时间
$time_start = time();
// 检查是否已经超时
function check_timeout(){
    // 开始时间
    global $time_start;
    // 5秒超时
    $timeout = 5;
    if(time()-$time_start > $timeout){
        exit("超时{$timeout}秒\n");
    }
}
// Zend引擎每执行一次低级语句就执行一下check_timeout
register_tick_function(&#39;check_timeout&#39;);
// 模拟一段耗时的业务逻辑
while(1){
   $num = 1;
}
// 模拟一段耗时的业务逻辑,虽然是死循环,但是执行时间不会超过$timeout=5秒
while(1){
   $num = 1;
}

2.declare(ticks=1); 하위 수준 명령문이 실행될 때마다 프로세스에 처리되지 않은 신호가 있는지 확인합니다.
php 신호를 실행합니다. php
그런 다음 CTL+ c 또는 kill -SIGINT PID를 사용하면 실행 중인 코드가 무한 루프에서 벗어나 pcntl_signal에 등록된 함수를 실행하게 됩니다. 그 결과 스크립트 종료 시 "Get signal SIGINT and exi"Exit

<?php
declare(ticks=1);
pcntl_signal(SIGINT, function(){
   exit("Get signal SIGINT and exit\n");
});
echo "Ctl + c or run cmd : kill -SIGINT " . posix_getpid(). "\n" ;
while(1){
  $num = 1;
}
가 인쇄됩니다.

위 내용은 PHP의 선언 기능에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.