| 
	
 | 
 Posted by petersprc on 01/15/07 19:25 
If you were willing to include pslist inside your app's directory, you 
could use it only when necessary, thus preserving portability. For 
example: 
 
    if (substr(PHP_OS,0,3) == 'WIN') { 
        // Only run pslist on windows 
        exec(dirname(__FILE__) . '/win/pslist -m ' . getmypid(), 
$lines, $rc); 
        [...] 
    } else { 
        // Something else for unix 
    } 
 
Another way might be to use the win32 API functions and call 
GetProcessMemoryInfo from psapi.dll. Here's an example of calling a 
win32 function: 
 
    http://us2.php.net/manual/en/ref.w32api.php#39181 
 
If you have the php_win32ps.dll extension loaded, you can could call 
win32_ps_stat_proc(getmypid()). 
 
comp.lang.php wrote: 
> I wrote my own version of memory_get_usage() if that function is not 
> available: 
> 
> [PHP] 
> if (!function_exists('memory_get_usage')) { 
> 	/** 
> 	 * Determine the amount of memory you are allowed to have 
> 	 * 
> 	 * @access public 
> 	 * @return long 
> 	 * @link 
> http://us2.php.net/manual/en/function.memory-get-usage.php#64156 
> 	 * @see link regarding usage of memory_get_usage() homegrown function 
> 	 * @see DBActionPerformer 
> 	 */ 
> 	function memory_get_usage() { 
> 		// NEW 1/15/2007: EMERGENCY PATCH TO REINTRODUCE DBActionPerformer 
> 		if (!class_exists('DBActionPerformer')) { 
> 		 global $basePath; 
> 		 if (!class_exists('MethodGeneratorForActionPerformer')) 
> 		  require_once("$basePath/include/classes.inc.php"); 
> 		 require_once("$basePath/include/db_action.inc.php"); 
> 		} 
> 		$dbAP =& new DBActionPerformer();		// NO DB ACTION REQUIRED HERE JUST 
> THE CLASS OBJECT INSTANCE FOR getKommandOSArray() METHOD 
> 		list($memKommand, $memRedirect) = 
> @array_values($dbAP->getKommandOSArray('allowed-memory')); 
> 		$outputArray = array(); 
> 		exec("$memKommand $memRedirect", $outputArray); 
> 		if ($_ENV['windir'] || $_SERVER['windir']) { 
> 		 return preg_replace( '/[\D]/', '', $outputArray[5]) * 1024; 
> 		} else { 
> 	         $outputArray = @explode('  ', $outputArray[0]); 
> 		 return $outputArray[1] * 1024; 
> 		} 
>   	 } 
> } 
> [/PHP] 
> 
> This function works in *nix and Win XP Pro and Win 2003 Server with no 
> problems. 
> 
> However, the dev environment is using Win XP Home with PHP 5.2.0 and 
> the function is not only not available, my homegrown version breaks as 
> well because "tasklist" is a DOS program only available to Win XP Pro 
> and Win 2003 Server, definitely not to XP Home. 
> 
> Because of this I need another variation of my function but don't have 
> any idea where to begin to look.  "pslist" is also not an option 
> because the business requirement for the app is that it must be a 
> dual-functioning (Windows and *nix) PHP PORTABLE web application, so 
> you have to pack it up and go every time, so having executables along 
> like "pslist" is not always a viable option. 
>  
> Suggestions? 
>  
> Thanx 
> Phil
 
[Back to original message] 
 |