Forráskód Böngészése

workermand status add status col

walkor 11 éve
szülő
commit
fa6477e290
1 módosított fájl, 27 hozzáadás és 8 törlés
  1. 27 8
      workerman/Common/Monitor.php

+ 27 - 8
workerman/Common/Monitor.php

@@ -279,35 +279,54 @@ class Monitor extends Man\Core\SocketWorker
                 }
                 
                 $this->sendToClient("---------------------------------------PROCESS STATUS-------------------------------------------\n");
-                $this->sendToClient("pid\tmemory  ".str_pad('    listening', $this->maxAddressLength)." timestamp  ".str_pad('worker_name', $this->maxWorkerNameLength)." ".str_pad('total_request', 13)." ".str_pad('packet_err', 10)." ".str_pad('thunder_herd', 12)." ".str_pad('client_close', 12)." ".str_pad('send_fail', 9)." ".str_pad('throw_exception', 15)." suc/total\n");
+                $this->sendToClient("pid\tmemory  ".str_pad('    listening', $this->maxAddressLength)." timestamp  ".str_pad('worker_name', $this->maxWorkerNameLength)." ".str_pad('total_request', 13)." ".str_pad('packet_err', 10)." ".str_pad('thunder_herd', 12)." ".str_pad('client_close', 12)." ".str_pad('send_fail', 9)." ".str_pad('throw_exception', 15)." suc/total status\n");
                 if(!\Man\Core\Master::getQueueId())
                 {
                     return;
                 }
                 
-                $time_start = time();
+                $time_start = microtime(true);
                 unset($pid_worker_name_map[posix_getpid()]);
                 $total_worker_count = count($pid_worker_name_map);
                 foreach($pid_worker_name_map as $pid=>$worker_name)
                 {
                     posix_kill($pid, SIGUSR1);
-                    if($this->getStatusFromQueue())
+                    if($response_pid = $this->getStatusFromQueue())
                     {
+                        unset($pid_worker_name_map[$response_pid]);
                         $total_worker_count--;
                     }
                 }
                 
-                while($total_worker_count > 0)
+                while(count($pid_worker_name_map) > 0)
                 {
-                    if($this->getStatusFromQueue())
+                    if($response_pid = $this->getStatusFromQueue())
                     {
+                        unset($pid_worker_name_map[$response_pid]);
                         $total_worker_count--;
                     }
-                    if(time() - $time_start > 1)
+                    if(microtime(true) - $time_start > 0.1)
                     {
                         break;
                     }
                 }
+                
+                foreach($pid_worker_name_map as $pid=>$worker_name)
+                {
+                    if('FileMonitor' == $worker_name)
+                    {
+                        continue;
+                    }
+                    
+                    $address = \Man\Core\Lib\Config::get($worker_name . '.listen');
+                    if(!$address)
+                    {
+                        $address = 'none';
+                    }
+                    $str = "$pid\t".str_pad("N/A", 7)." " .str_pad($address,$this->maxAddressLength) ." N/A        ".str_pad($worker_name, $this->maxWorkerNameLength)." ";
+                    $str = $str . str_pad("N/A", 14)." ".str_pad("N/A",10)." ".str_pad("N/A",12)." ".str_pad("N/A", 12)." ".str_pad("N/A",9)." ".str_pad("N/A",15)." N/A       \033[33;33mbusy\033[0m";
+                    $this->sendToClient($str."\n");
+                }
                 break;
                 // 停止server
             case 'stop':
@@ -376,14 +395,14 @@ class Monitor extends Man\Core\SocketWorker
             $str = "$pid\t".str_pad(round($message['memory']/(1024*1024),2)."M", 7)." " .str_pad($address,$this->maxAddressLength) ." ". $message['start_time'] ." ".str_pad($worker_name, $this->maxWorkerNameLength)." ";
             if($message)
             {
-                $str = $str . str_pad($message['total_request'], 14)." ".str_pad($message['packet_err'],10)." ".str_pad($message['thunder_herd'],12)." ".str_pad($message['client_close'], 12)." ".str_pad($message['send_fail'],9)." ".str_pad($message['throw_exception'],15)." ".($message['total_request'] == 0 ? 100 : (round(($message['total_request']-($message['packet_err']+$message['send_fail']))/$message['total_request'], 6)*100))."%";
+                $str = $str . str_pad($message['total_request'], 14)." ".str_pad($message['packet_err'],10)." ".str_pad($message['thunder_herd'],12)." ".str_pad($message['client_close'], 12)." ".str_pad($message['send_fail'],9)." ".str_pad($message['throw_exception'],15)." ".str_pad(($message['total_request'] == 0 ? 100 : (round(($message['total_request']-($message['packet_err']+$message['send_fail']))/$message['total_request'], 6)*100))."%", 9) . " \033[32;40midle\033[0m";
             }
             else
             {
                 $str .= var_export($message, true);
             }
             $this->sendToClient($str."\n");
-            return true;
+            return $pid;
         }
         return false;
     }