• [^] # Re: man pidof

    Posté par . En réponse au message [Solved] [Optimisation] PHP/Bash tester le plus rapidement si un process est actif. Évalué à 1. Dernière modification le 18 mars 2019 à 17:20.

    Rectification de ma part, c'est mon code qui était pourris. Cette version fonctionne et est beaucoup plus rapide que via pidof.

    <?php
    $chkSoftwareName = array( "apache2", "mysql" );
    function checkIfSoftwareIsRunning(){
    }
     if(is_array($chkSoftwareName)) {
    function checkIfSoftwareIsRunning ($chkSoftwareName){
     $path="/proc/";
     $subfile="cmdline";
     $checkOfAllSoft=true;
     foreach($chkSoftwareName as $softwareName){
     $checkOfThisSoft=false;
     $di = new RecursiveDirectoryIterator($path);
     $cpt = 0;
     $listFiles = scandir($path, 1);
     $lenght = count($listFiles);
     foreach ($listFiles as $filename) {
     if(is_dir($path.$filename)){
     if(is_file($path.$filename.'/'.$subfile)){
     $handle = @fopen($path.$filename."/".$subfile, "r");
     if ($handle) {
     while (($buffer = fgets($handle)) !== false) {
     if(preg_match("/".$softwareName."/i", $buffer)){
     $checkOfThisSoft=true;
     }
     }
     if (!feof($handle)) {
     echo "Error: unexpected fgets() fail\n";
     }
     fclose($handle);
     }
     }
     }
     if ($cpt == $lenght - 1 && $checkOfThisSoft==false) {
     // last tab
     $checkOfAllSoft=false;
     }
     $cpt++;
     }
     }
     if(!$checkOfAllSoft) {
     header('HTTP/1.1 502'); exit;
     }else{
     return true;
     }
    }
     }
    ?>