php怎么执行shell不等待响应

PHP是一门强大的编程语言,支持执行shell命令,但执行shell命令默认会等待响应,若需要不等待响应直接执行指令,可通过以下方式实现:

1. exec函数

PHP的exec函数可以执行shell命令,若需要不等待执行结果则需要在命令后加上“&”。


$cmd = 'ls -l >/dev/null 2>&1 &';

exec($cmd);

?>

上述代码中,exec函数会在后台执行ls -l命令,&符号表示后台执行。

2. shell_exec函数

shell_exec函数也可以执行shell命令,不过会把命令的全部结果都读取到一个字符串中返回,包括标准输出和标准错误流。为了不等待shell命令结果,同样需要在命令后加上“&”。例如:


$cmd = 'ls -l >/dev/null 2>&1 &';

shell_exec($cmd);

?>

3. system函数

和exec、shell_exec函数类似,system函数也可以执行shell命令,不过system函数会把命令的输出打印到标准输出流而不是返回给调用者,也可以通过在命令末尾添加“&”实现不等待的效果。例如:


$cmd = 'ls -l >/dev/null 2>&1 &';

system($cmd);

?>

4. passthru函数

passthru函数也可以执行shell命令,和system函数不同的是,它会把命令的输出直接输出到标准输出流,而不是返回给调用者,也可以在命令后添加“&”实现不等待效果。例如:


$cmd = 'ls -l >/dev/null 2>&1 &';

passthru($cmd);

?>

5. popen函数

PHP中另一个可以执行shell命令的函数是popen函数,它的用法类似于fopen函数,返回一个文件句柄,我们可以通过它来读取命令的执行结果。同样的,通过在命令末尾添加“&”可以实现不等待效果。例如:


$cmd = 'ls -l >/dev/null 2>&1 &';

$handle = popen($cmd, 'r');

pclose($handle);

?>

总结

以上就是几种PHP执行shell命令不等待响应的方法。虽然默认情况下执行shell命令会等待执行结果,但设置一些参数或者使用特定的函数调用也可以实现不等待效果,我们可以按需选择。另外,为了防止命令过于占用系统资源,建议在每个命令后都添加“&”并重定向标准输入输出流。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签