感谢你来到这里
我真的很激动
盼望,能有你的支持
捐赠可扫描二维码转账支付
支付宝扫一扫付款
微信扫一扫付款
(微信为保护隐私,不显示你的昵称)
进程助手,显示正在运行的进程,并汇报关于进程状态的有用信息。
要显示进程(process)细节,使用 ProcessHelper
并使用verbosity选项来运行你的命令。例如,使用very verbose verbosity级别(即 `-vv`)来运行以下代码:
1 2 3 4 5 6 | use Symfony\Component\Process\ProcessBuilder;
$helper = $this->getHelper('process');
$process = ProcessBuilder::create(array('figlet', 'Symfony'))->getProcess();
$helper->run($output, $process); |
这将导致以下输出:
若使用debug verbosity(调试用冗长度,比如 -vvv
)则会输出更多细节:
如果进程失败,调试起来很容易:
有三种方式可以使用进程助手:
1 2 | // ...
$helper->run($output, 'figlet Symfony'); |
1 2 | // ...
$helper->run($output, array('figlet', 'Symfony')); |
当对一个数组参数使用本助手时,要注意它们会被自动转义。
Process
实例:1 2 3 4 5 6 | use Symfony\Component\Process\ProcessBuilder;
// ...
$process = ProcessBuilder::create(array('figlet', 'Symfony'))->getProcess();
$helper->run($output, $process); |
你可以显示自定义的错误信息,使用 run()
方法的第三个参数即可:
1 | $helper->run($output, $process, 'The process failed :('); |
可以把一个process callback当作第四个参数传入。参考 Process组件 以了解callback的相关文档:
1 2 3 4 5 6 7 8 9 | use Symfony\Component\Process\Process;
$helper->run($output, $process, 'The process failed :(', function ($type, $data) {
if (Process::ERR === $type) {
// ... do something with the stderr output / 处理 stderr 输出
} else {
// ... do something with the stdout / 处理 stdout 输出
}
}); |
本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。