微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用PHP非阻塞运行linuxterminal命令?

假设我想通过我的网页在表单提交上运行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 :

<div id="du-div">Calculating filespace...</div>

然后onload,通过ajax调用你的du.PHP,它将运行并返回你的文件使用情况。 然后你更新你的div与内容

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐