L'utilisation générale de php declare est "declare(ticks=N);", sa fonction est que le moteur Zend exécutera la fonction enregistrée par "register_tick_function()" à chaque fois qu'il exécute une instruction de bas niveau .
Recommandé : "Tutoriel vidéo PHP"
Explication détaillée de la fonction de déclarer en php
L'usage général est declare(ticks=N);
Prenons declare(ticks=1) comme exemple. Cette phrase a deux fonctions principales :
1. . Chaque fois que le moteur Zend exécute une instruction de bas niveau, la fonction enregistrée par register_tick_function() est exécutée une fois.
peut être grossièrement compris comme l'exécution de la fonction de tick enregistrée à chaque fois qu'une phrase de code php est exécutée (par exemple : $num=1;).
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 infinie à 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, le processus sera vérifié pour voir. s'il y a des signaux non gérés. , le code de test est le suivant :
Exécutez php signal.php
Ensuite, CTL+c ou kill -SIGINT PID fera sortir le code en cours d'exécution du fichier. boucle infinie pour exécuter la fonction enregistrée par pcntl_signal. L'effet est que la sortie du script imprime "Obtenir le signal SIGINT et 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; }
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!