swoole_async::exec
最后更新于:2022-04-02 06:38:38
# swoole\_async::exec
[TOC]
异步执行`Shell`命令。相当于`shell_exec`函数,执行后底层会`fork`一个子进程,并执行对应的`command`命令。
~~~
function swoole_async::exec(string $command, callable $callback);
~~~
* `$command`为执行的终端指令,如`ls`
* 执行成功后返回子进程的`PID`
* 命令执行完毕子进程退出后会回调指定的`$callback`函数,回调函数接收`2`个参数,第一个参数为命令执行后的屏幕输出内容`$result`,第二个参数为进程退出的状态信息`$status`
## 注意事项
* **`fork`创建子进程的操作代价是非常昂贵的,系统无法支撑过大的并发量**
* 使用`exec`时,请勿使用`pcntl_signal`或`swoole_process::signal`注册`SIGCHLD`函数,执行`wait`操作,否则在命令回调函数中,状态信息`$status`将为`false`
> 此函数在`1.9.22`或更高版本可用
## 使用实例
~~~
$pid = Swoole\Async::exec("ps aux", function ($result, $status) {
var_dump(strlen($result), $status);
});
var_dump($pid);
~~~
';