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;
 | |
| }
 |