本文整理汇总了PHP中WP_CLI::capture_exit方法的典型用法代码示例。如果您正苦于以下问题:PHP WP_CLI::capture_exit方法的具体用法?PHP WP_CLI::capture_exit怎么用?PHP WP_CLI::capture_exit使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WP_CLI
的用法示例。
在下文中一共展示了WP_CLI::capture_exit方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: runcommand
/**
* Run a WP-CLI command.
*
* Launch a new child process, or run the command in the current process.
* Optionally:
* * Prevent halting script execution on error.
* * Capture and return STDOUT, or full details about command execution.
* * Parse JSON output if the command rendered it.
*
* ```
* $options = array(
* 'return' => true, // Return 'STDOUT'; use 'all' for full object.
* 'parse' => 'json', // Parse captured STDOUT to JSON array.
* 'launch' => false, // Reuse the current process.
* 'exit_error' => true, // Halt script execution on error.
* );
* $plugins = WP_CLI::runcommand( 'plugin list --format=json', $options );
* ```
*
* @access public
* @category Execution
*
* @param string $command WP-CLI command to run, including arguments.
* @param array $options Configuration options for command execution.
* @return mixed
*/
public static function runcommand($command, $options = array())
{
$defaults = array('launch' => true, 'exit_error' => true, 'return' => false, 'parse' => false);
$options = array_merge($defaults, $options);
$launch = $options['launch'];
$exit_error = $options['exit_error'];
$return = $options['return'];
$parse = $options['parse'];
$retval = null;
if ($launch) {
if ($return) {
$descriptors = array(0 => STDIN, 1 => array('pipe', 'w'), 2 => array('pipe', 'w'));
} else {
$descriptors = array(0 => STDIN, 1 => STDOUT, 2 => STDERR);
}
$php_bin = self::get_php_binary();
$script_path = $GLOBALS['argv'][0];
// Persist runtime arguments unless they've been specified otherwise.
$configurator = \WP_CLI::get_configurator();
$argv = array_slice($GLOBALS['argv'], 1);
list($_, $_, $runtime_config) = $configurator->parse_args($argv);
foreach ($runtime_config as $k => $v) {
if (preg_match("|^--{$key}=?\$|", $command)) {
unset($runtime_config[$k]);
}
}
$runtime_config = Utils\assoc_args_to_str($runtime_config);
$runcommand = "{$php_bin} {$script_path} {$runtime_config} {$command}";
$env_vars = array('HOME', 'WP_CLI_AUTO_CHECK_UPDATE_DAYS', 'WP_CLI_CACHE_DIR', 'WP_CLI_CONFIG_PATH', 'WP_CLI_DISABLE_AUTO_CHECK_UPDATE', 'WP_CLI_PACKAGES_DIR', 'WP_CLI_PHP_USED', 'WP_CLI_PHP', 'WP_CLI_STRICT_ARGS_MODE');
$env = array();
foreach ($env_vars as $var) {
$env[$var] = getenv($var);
}
$proc = proc_open($runcommand, $descriptors, $pipes, getcwd(), $env);
if ($return) {
$stdout = stream_get_contents($pipes[1]);
fclose($pipes[1]);
$stderr = stream_get_contents($pipes[2]);
fclose($pipes[2]);
}
$return_code = proc_close($proc);
if (-1 == $return_code) {
self::warning("Spawned process returned exit code -1, which could be caused by a custom compiled version of PHP that uses the --enable-sigchild option.");
} else {
if ($return_code && $exit_error) {
exit($return_code);
}
}
if (true === $return || 'stdout' === $return) {
$retval = trim($stdout);
} else {
if ('stderr' === $return) {
$retval = trim($stderr);
} else {
if ('return_code' === $return) {
$retval = $return_code;
} else {
if ('all' === $return) {
$retval = (object) array('stdout' => trim($stdout), 'stderr' => trim($stderr), 'return_code' => $return_code);
}
}
}
}
} else {
$configurator = self::get_configurator();
$argv = Utils\parse_str_to_argv($command);
list($args, $assoc_args, $runtime_config) = $configurator->parse_args($argv);
if ($return) {
ob_start();
$existing_logger = self::$logger;
self::$logger = new WP_CLI\Loggers\Execution();
}
if (!$exit_error) {
self::$capture_exit = true;
//.........这里部分代码省略.........