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

angryTom
Libérer: 2023-04-07 16:02:01
avant
3090 Les gens l'ont consulté

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

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!

Étiquettes associées:
source:rango.swoole.com
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!