博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php的异步请求
阅读量:6656 次
发布时间:2019-06-25

本文共 747 字,大约阅读时间需要 2 分钟。

  hot3.png

很多情况下我们需要让php在后台执行某个程序,同时又不影响页面的输出,以下是我总结的几种实现方式

exec

这是最简单的方式

%s 2>&1 & echo $! > %s", $cmd, $outputfile, $pidfile));

调用$cmd命令,将输出重定向到$outputfile,不显示错误信息,同时将进程id输出到$pidfile。

这样也方便监控,比如判断该进程是否还在运行

2){ return true; } }catch(Exception $e){} return false;}

注意:如果直接调用exec来运行某个命令,或者在该命令后面加个"&",php还是会等待该命令运行完成再执行下面的操作。

proc_open/proc_close

这个方法很有意思,先用proc_open运行一段后台程序,然后用proc_close来关闭proc_open,结果程序就在后台运行了,同时php也会继续执行下去

/path/to/output &", array(), $foo));

pcntl_fork

使用php的多线程来达到目的,原理就是复制一个子线程,同时杀死父线程(不支持windows)。

/path/to/output');

header

使用这个方法的前提是使用http协议,同时目标文件可控,最好在一个域下。因为必须要建立http连接才行,所以稍微有点费时。原理是通过header输出’Connection:close’头,中断http连接,同时后面的代码继续执行。

转载于:https://my.oschina.net/kear/blog/123324

你可能感兴趣的文章
我的友情链接
查看>>
SUSE下nx nomachine安装配置
查看>>
精通脚本***学习笔记(二)
查看>>
我的友情链接
查看>>
shell数组常见操作
查看>>
typedef用法
查看>>
oracle基本操作语句(初学者语句)
查看>>
【Android必备】应用小部件概述(23)
查看>>
【Interface&navigation】材料设计(20)
查看>>
我要学python之生成器
查看>>
ubuntu 13.04 安装QQ
查看>>
IOS图片的拉伸技巧
查看>>
tomcat安装
查看>>
KVM虚拟化的部署及使用
查看>>
Linux软链接和硬链接文件
查看>>
semaphore.h
查看>>
java学习笔记 --- 网络编程(套接字)
查看>>
tkinter 03 Listbox 列表部件
查看>>
Linux磁盘管理命令介绍
查看>>
一锤定音:高通(Qualcomm)370亿美元收购NXP,成为全球第一大汽车芯片供应商...
查看>>