Maison  >  Article  >  développement back-end  >  Comment définir un délai d'attente pour l'exécution d'une fonction en PHP

Comment définir un délai d'attente pour l'exécution d'une fonction en PHP

angryTom
angryTomavant
2019-10-15 09:33:453066parcourir

Comment éviter qu'une fonction prenne trop de temps à s'exécuter ? En PHP, vous pouvez utiliser le signal d'horloge pcntl + exception pour y parvenir.

Le code est le suivant :

<?php
declare(ticks = 1);
function a()
{
    sleep(10);
    echo "a finishi\n";
}
function b()
{
    echo "Stop\n";
}
function c()
{
    usleep(100000);
}
function sig()
{
    throw new Exception;
}
try
{
    pcntl_alarm(1);
    pcntl_signal(SIGALRM, "sig");
    a();
    pcntl_alarm(0);
}
catch(Exception $e)
{
    echo "timeout\n";
}
b();
a();
b();

Le principe est de régler un signal d'horloge avant que la fonction ne soit exécutée Si l'exécution de la fonction dépasse le temps spécifié, le signal sera déclenché. Traitement du signal La fonction lève une exception, qui est interceptée par le code externe. Cela sortira de l'exécution de la fonction d'origine, puis exécutera le code suivant. Si la fonction est dans le délai spécifié, le signal d'horloge ne sera pas déclenché. Le signal d'horloge sera effacé une fois la fonction terminée et aucune exception ne sera levée.

Pour plus de connaissances sur PHP, veuillez visiter le Site Web PHP chinois !

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer