160 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			160 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace Safe;
 | 
						|
 | 
						|
use Safe\Exceptions\ExecException;
 | 
						|
 | 
						|
/**
 | 
						|
 * proc_get_status fetches data about a
 | 
						|
 * process opened using proc_open.
 | 
						|
 *
 | 
						|
 * @param resource $process The proc_open resource that will
 | 
						|
 * be evaluated.
 | 
						|
 * @return array An array of collected information on success. The returned array contains the following elements:
 | 
						|
 *
 | 
						|
 *
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * elementtypedescription
 | 
						|
 *
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * command
 | 
						|
 * string
 | 
						|
 *
 | 
						|
 * The command string that was passed to proc_open.
 | 
						|
 *
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * pid
 | 
						|
 * int
 | 
						|
 * process id
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * running
 | 
						|
 * bool
 | 
						|
 *
 | 
						|
 * TRUE if the process is still running, FALSE if it has
 | 
						|
 * terminated.
 | 
						|
 *
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * signaled
 | 
						|
 * bool
 | 
						|
 *
 | 
						|
 * TRUE if the child process has been terminated by
 | 
						|
 * an uncaught signal. Always set to FALSE on Windows.
 | 
						|
 *
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * stopped
 | 
						|
 * bool
 | 
						|
 *
 | 
						|
 * TRUE if the child process has been stopped by a
 | 
						|
 * signal. Always set to FALSE on Windows.
 | 
						|
 *
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * exitcode
 | 
						|
 * int
 | 
						|
 *
 | 
						|
 * The exit code returned by the process (which is only
 | 
						|
 * meaningful if running is FALSE).
 | 
						|
 * Only first call of this function return real value, next calls return
 | 
						|
 * -1.
 | 
						|
 *
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * termsig
 | 
						|
 * int
 | 
						|
 *
 | 
						|
 * The number of the signal that caused the child process to terminate
 | 
						|
 * its execution (only meaningful if signaled is TRUE).
 | 
						|
 *
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * stopsig
 | 
						|
 * int
 | 
						|
 *
 | 
						|
 * The number of the signal that caused the child process to stop its
 | 
						|
 * execution (only meaningful if stopped is TRUE).
 | 
						|
 *
 | 
						|
 *
 | 
						|
 *
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * @throws ExecException
 | 
						|
 *
 | 
						|
 */
 | 
						|
function proc_get_status($process): array
 | 
						|
{
 | 
						|
    error_clear_last();
 | 
						|
    $result = \proc_get_status($process);
 | 
						|
    if ($result === false) {
 | 
						|
        throw ExecException::createFromPhpError();
 | 
						|
    }
 | 
						|
    return $result;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * proc_nice changes the priority of the current
 | 
						|
 * process by the amount specified in increment. A
 | 
						|
 * positive increment will lower the priority of the
 | 
						|
 * current process, whereas a negative increment
 | 
						|
 * will raise the priority.
 | 
						|
 *
 | 
						|
 * proc_nice is not related to
 | 
						|
 * proc_open and its associated functions in any way.
 | 
						|
 *
 | 
						|
 * @param int $increment The new priority value, the value of this may differ on platforms.
 | 
						|
 *
 | 
						|
 * On Unix, a low value, such as -20 means high priority
 | 
						|
 * wheras a positive value have a lower priority.
 | 
						|
 *
 | 
						|
 * For Windows the increment parameter have the
 | 
						|
 * following meanings:
 | 
						|
 * @throws ExecException
 | 
						|
 *
 | 
						|
 */
 | 
						|
function proc_nice(int $increment): void
 | 
						|
{
 | 
						|
    error_clear_last();
 | 
						|
    $result = \proc_nice($increment);
 | 
						|
    if ($result === false) {
 | 
						|
        throw ExecException::createFromPhpError();
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * system is just like the C version of the
 | 
						|
 * function in that it executes the given
 | 
						|
 * command and outputs the result.
 | 
						|
 *
 | 
						|
 * The system call also tries to automatically
 | 
						|
 * flush the web server's output buffer after each line of output if
 | 
						|
 * PHP is running as a server module.
 | 
						|
 *
 | 
						|
 * If you need to execute a command and have all the data from the
 | 
						|
 * command passed directly back without any interference, use the
 | 
						|
 * passthru function.
 | 
						|
 *
 | 
						|
 * @param string $command The command that will be executed.
 | 
						|
 * @param int $return_var If the return_var argument is present, then the
 | 
						|
 * return status of the executed command will be written to this
 | 
						|
 * variable.
 | 
						|
 * @return string Returns the last line of the command output on success.
 | 
						|
 * @throws ExecException
 | 
						|
 *
 | 
						|
 */
 | 
						|
function system(string $command, int &$return_var = null): string
 | 
						|
{
 | 
						|
    error_clear_last();
 | 
						|
    $result = \system($command, $return_var);
 | 
						|
    if ($result === false) {
 | 
						|
        throw ExecException::createFromPhpError();
 | 
						|
    }
 | 
						|
    return $result;
 | 
						|
}
 |