2021-4-15 17:51 Thursdayphp非阻塞(异步)执行系统命令
PHP种常见的执行系统命令的函数都是阻塞的,例如exec、system、shell_exec等,也就是说,如果你的命令要执行很久的话,那么就要考虑脚本超时的问题,如果是在cli模式下,也要考虑阻塞的问题。
那么如果我想执行了命令之后继续往下执行,暂时不管命令的执行结果,也就是希望非阻塞执行,通常来说是异步执行,怎么办呢?这里可以使用popen和pclose函数:
pclose(popen($cmd, 'r'));
至于这两个函数的详细介绍,可以参照PHP官网的文档。
实际上严格来说,这只是非阻塞执行,而非异步,因为在命令执行完成之后没有进行回调,当然,你可以在执行命令的时候使用&&拼接自己希望执行的回调就可以了。