我有一个执行 shell 命令的 PHP 脚本...我遇到了一个问题,即 PHP 脚本处于暂停状态,直到它收到 shell 命令的输出。如果 shell 命令需要 5 分钟,PHP 脚本也需要 5 分钟。这没问题,但我还遇到的问题是,虽然页面停滞,但它也会停滞整个网站,直到 shell 脚本完成。我试图理解为什么会发生这种情况...
我创建了一个hello.php
并在其中放入了一个简单的脚本echo 'hello world';
,能够在 PHP 脚本等待 shell 命令完成时成功运行它。这告诉我,当站点停滞时,一定与正在使用的 PHP 文件有关,因此它不会处理额外的页面请求。
有什么想法吗?
答案1
PHP 中几乎所有的进程执行函数(例如exec
,反引号运算符shell_exec
)都会等待被调用的程序完成。就是这样的。
如果你想在被调用程序运行时在 PHP 脚本中执行其他操作,可以将其置于后台或使用 PHP 的过程控制功能。