Explication détaillée de la fonction de déclarer en php

伊谢尔伦
Libérer: 2023-03-11 10:56:01
original
5287 Les gens l'ont consulté

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(&#39;check_timeout&#39;);
// 模拟一段耗时的业务逻辑
while(1){
   $num = 1;
}
// 模拟一段耗时的业务逻辑,虽然是死循环,但是执行时间不会超过$timeout=5秒
while(1){
   $num = 1;
}
Copier après la connexion

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;
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!