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