假设我想通过我的网页在表单提交上运行PHP的服务器端命令。 这个命令可能需要几分钟才能完成。 我可以以某种方式使用exec()或shell_exec(),以便网页立即重新加载,而不等待命令的输出? 一个例子会很棒! 谢谢!
<?PHP exec('du -hs'); ?>
linux只按每行的首字母sorting
合并很多大型CSV文件(在Linux中)
Linux多GPU离屏渲染
使用FreeIPMI API从IPMI获取所有DIMM信息
使用-fPIC编译的程序在GDB中跨越线程局部variables时崩溃
HACK ALERT,但是如果你不想背景的话(比如说你需要对结果做些什么),并且不关心它什么时候结束,你可以把这个命令放在对象的析构函数方法中。 请注意,虽然用户将得到他们的回应,并可以自由地请求另一个页面,但在完成之前,该进程不会从Apache或PHP-fpm中释放。
class someClass{ function __destruct(){ exec('du -hs'); } }
注意:在后台处理任务的可靠方法是使用消息队列和作业服务处理程序与gearman,rabbitMQ等构建。
由阿尔诺·范登·布林克exec() Arno van den Brink exec()为exec()提供的PHP文档的顶端评论给了你答案:
这将在后台执行$ cmd(没有cmd窗口),没有PHP在Windows和Unix上等待它完成。
<?PHP function execInBackground($cmd) { if (substr(PHP_uname(),7) == "Windows"){ pclose(popen("start /B ". $cmd,"r")); } else { exec($cmd . " > /dev/null &"); } } ?>
这听起来像你想在网页上显示du的结果,但不要等待。 这将需要一个Ajax调用。
<div id="du-div">Calculating filespace...</div>
然后onload,通过ajax调用你的du.PHP,它将运行并返回你的文件使用情况。 然后你更新你的div与内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。