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('check_timeout'); // 模拟一段耗时的业务逻辑 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!