Maison  >  Article  >  développement back-end  >  Explication détaillée de l'utilisation de la déclaration php

Explication détaillée de l'utilisation de la déclaration php

藏色散人
藏色散人original
2020-10-22 09:38:032935parcourir

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 .

Explication détaillée de l'utilisation de la déclaration php

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( &#39;check_timeout&#39; );
// 模拟一段耗时的业务逻辑
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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn