La fonction de declare en php :
est généralement utilisée comme declare(ticks=N);
Prenez declare(ticks=1) comme exemple. deux fonctions principales. :
1. Chaque fois que le moteur Zend exécute une instruction de bas niveau, il exécute la fonction enregistrée de register_tick_function().
peut être grossièrement compris comme l'exécution de la fonction de tick enregistrée à chaque fois qu'une phrase de code php (par exemple : $num=1;) est exécutée.
Une utilisation consiste à contrôler le temps d'exécution d'un certain morceau de code. Par exemple, bien que le code suivant ait une boucle morte à la fin, le temps d'exécution ne dépassera pas 5 secondes.
Exécutez 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); Chaque fois qu'une instruction de bas niveau est exécutée, il vérifiera si le processus a des signaux non gérés. comme suit :
Exécutez php signal.php
Ensuite, CTL+c ou kill -SIGINT PID fera sortir le code en cours de la boucle infinie pour exécuter la fonction enregistrée par pcntl_signal. L'effet est que le script se termine. imprime "Obtenir le signal SIGINT et exi" Quitter
<?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; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!