Maison >développement back-end >tutoriel php >Comment puis-je exécuter des processus PHP chronophages en arrière-plan sans bloquer l'utilisateur ?

Comment puis-je exécuter des processus PHP chronophages en arrière-plan sans bloquer l'utilisateur ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-25 11:23:10119parcourir

How Can I Execute Time-Consuming PHP Processes in the Background Without Blocking the User?

Exécuter des processus en arrière-plan en PHP

Exécuter des processus fastidieux, tels que la copie de répertoires, sans bloquer l'expérience utilisateur peut être un défi. Cet article présente une solution qui permet à de telles tâches de s'exécuter en arrière-plan.

Exécution du processus en arrière-plan

Pour lancer une copie de répertoire sans interruption de l'utilisateur, envisagez les étapes suivantes :

  1. Utilisez exec() pour lancer la commande :
    Employez exec pour lancer la commande de copie, rediriger la sortie vers un fichier ($outputfile) et ajouter l'ID de processus à un autre fichier ($pidfile). Cela garantit une surveillance continue.

    exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile));
  2. Surveiller l'état du processus :
    Implémentez la fonction isRunning pour suivre l'état du processus en fonction de son PID.

    function isRunning($pid){
        try{
            $result = shell_exec(sprintf("ps %d", $pid));
            if( count(preg_split("/\n/", $result)) > 2){
                return true;
            }
        }catch(Exception $e){}
    
        return false;
    }

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