System_ProcWatch
[ class tree: System_ProcWatch ] [ index: System_ProcWatch ] [ all elements ]

Source for file Parser.php

Documentation is available at Parser.php

  1. <?php
  2. // +----------------------------------------------------------------------+
  3. // | PEAR :: System :: ProcWatch :: Parser                                |
  4. // +----------------------------------------------------------------------+
  5. // | This source file is subject to version 3.0 of the PHP license,       |
  6. // | that is available at http://www.php.net/license/3_0.txt              |
  7. // | If you did not receive a copy of the PHP license and are unable      |
  8. // | to obtain it through the world-wide-web, please send a note to       |
  9. // | license@php.net so we can mail you a copy immediately.               |
  10. // +----------------------------------------------------------------------+
  11. // | Copyright (c) 2003-2004 Michael Wallner <mike@iworks.at>             |
  12. // +----------------------------------------------------------------------+
  13. //
  14. // $Id: Parser.php 304228 2010-10-10 03:05:12Z clockwerx $
  15.  
  16. /**
  17. * System_ProcWatch_Parser
  18. * Fetches output from `ps` and parses it into an associative array
  19. * Usage:
  20. * <code>
  21. * $ps = &new System_ProcWatch_Parser();
  22. * $pd = &$ps->getParsedData();
  23. * </code>
  24. @author       Michael Wallner <mike@php.net>
  25. @package      System_ProcWatch
  26. @category     System
  27. *
  28. @version      $Revision: 304228 $
  29. @access       public
  30. */
  31. {
  32.     /**
  33.     * ps' args
  34.     *
  35.     * @access   private
  36.     * @var      string 
  37.     */
  38.     var $_args 'aux';
  39.     
  40.     /**
  41.     * Processes
  42.     *
  43.     * @access   private
  44.     * @var      array 
  45.     */
  46.     var $_procs = array();
  47.     
  48.     /**
  49.     * Constructor
  50.     *
  51.     * @access   protected
  52.     * @return   object  System_ProcWatch_Parser 
  53.     * @param    string  $ps_args    ps' args
  54.     */
  55.     function System_ProcWatch_Parser($ps_args 'aux')
  56.     {
  57.         System_ProcWatch_Parser::__construct($ps_args);
  58.     }
  59.     
  60.     /**
  61.     * Constructor (ZE2)
  62.     *
  63.     * @access   protected
  64.     * @return   object  System_ProcWatch_Parser 
  65.     * @param    string  $ps_args    ps' args
  66.     */
  67.     function __construct($ps_args 'aux')
  68.     {
  69.         $this->_args $ps_args;
  70.     }
  71.     
  72.     /**
  73.     * Fetch ps' data
  74.     *
  75.     * @access   public
  76.     * @return   string  ps' output
  77.     * @param    string  $ps_args    ps' args
  78.     */
  79.     function fetch($ps_args '')
  80.     {
  81.         if (empty($ps_args)) {
  82.             $ps_args $this->_args;
  83.         }
  84.         putenv('COLUMNS=1000');
  85.         return shell_exec("ps $ps_args");
  86.     }
  87.     
  88.     /**
  89.     * Parse
  90.     *
  91.     * @access   public
  92.     * @return   array 
  93.     * @param    string  $data 
  94.     */
  95.     function &parse($data)
  96.     {
  97.         $lines explode("\n"trim($data));
  98.         $heads preg_split('/\s+/'strToLower(trim(array_shift($lines))));
  99.         $count count($heads);
  100.         $procs = array();
  101.  
  102.         foreach($lines as $i => $line){
  103.             $parts preg_split('/\s+/'trim($line)$count);
  104.             foreach ($heads as $j => $head{
  105.                 $procs[$i][$headstr_replace('"''\"'$parts[$j]);
  106.             }
  107.         }
  108.  
  109.         return $procs;        
  110.     }
  111.     
  112.     /**
  113.     * Get parsed data
  114.     *
  115.     * @access   public
  116.     * @return   array 
  117.     * @param    string  $ps_args    ps' arguments
  118.     * @param    bool    $refresh    whether to refresh our data
  119.     */
  120.     function &getParsedData($ps_args 'aux'$refresh = false)
  121.     {
  122.         if ($refresh || empty($this->_procs)) {
  123.             $this->_procs &$this->parse($this->fetch($ps_args));
  124.         }
  125.         
  126.         return $this->_procs;
  127.     }
  128.  
  129.     /**
  130.     * Get info about a process by its PID
  131.     *
  132.     * @access   public
  133.     * @return   array 
  134.     * @param    int     $pid    the PID of the process
  135.     */
  136.     function getProcByPid($pid)
  137.     {
  138.         foreach ($this->getParsedData(as $proc{
  139.             if ($proc['pid'== $pid{
  140.                 return $proc;
  141.             }
  142.         }
  143.         return array();
  144.     }
  145.  
  146.     /**
  147.     * Get information about processes
  148.     *
  149.     * @access   public
  150.     * @return   array 
  151.     * @param    string  $pattern    PCRE to match for process
  152.     * @param    string  $search     the ps field to search for
  153.     */
  154.     function getProcInfo($pattern$search)
  155.     {
  156.         $result = array();
  157.         foreach ($this->getParsedData(as $p{
  158.             if (preg_match($pattern@$p[$search])) {
  159.                 $result[$p;
  160.             }
  161.         }
  162.         return $result;
  163.     }    
  164. }
  165. ?>

Documentation generated on Mon, 11 Mar 2019 15:39:51 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.