php异步处理
来源:互联网 发布:回收站恢复软件 编辑:程序博客网 时间:2024/05/16 12:20
前两天公司开发微信上传图片时(使用的thinkphp框架),老是出现没有响应的问题,最终经过查错,发现问题出在我们的服务器在抓取上传的图片时会出现超时的现象,而微信服务器在5s左右接收不到响应就会断开链接,所以导致上传图片没有响应,因此,我将图片抓取的处理重新写到了Test分组中的Async控制器中,为AsyncAction.class.php
class AsyncAction extends Action(){
public function saveImg(){
set_time_limit(0);
ignore_user_abort();//以上两行代码保证微信服务器在断开连接后依然可以继续执行
$url=$_GET['url'];//图片路径
//图片存储等操作******
}
}
在处理微信响应的程序中则可以这样处理,先定义一个异步处理函数,触发上述类中的操作后即断开
//异步调用后台任务
private function async($url,$data){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_TIMEOUT,1);//注意:此处设置1s即断开连接
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$res=curl_exec($ch);
curl_close($ch);
return $res;
}
则在处理微信服务器的回复时可以先:
$url=***************;//通过微信服务器推送的图片地址 根据自己的业务逻辑可以获取
$async_url=U('Test/Async/saveImg');
$this->async($async_url,array('url'=>$url));//异步存储图片 仅有1s的延迟 不会造成下一句无法执行
$this->response();//回复微信服务器
这种方式可以避免因为复杂操作导致超时,但是异步操作以后也将无法返回异步操作的结果
- php异步处理
- php实现异步处理
- PHP异步处理方法
- PHP短耗时异步处理
- php异步任务处理-gearman
- php swoole异步处理mysql
- php异步任务处理 (php-resque)
- php 怎样实现异步处理接口
- PHP 异步处理fsockopen 和 curl 实现
- PHP实现异步处理利器-Gearman
- php swoole 异步处理任务例子
- 异步上传文件以及php对文件的处理
- ajax异步请求php后台处理耗时任务session_write_close
- PHP和Ajax异步批量处理数据提交问题
- 异步调用,异步处理
- 异步处理
- 异步处理
- 异步处理
- 黑马程序员--IO流(三)
- Java基础回顾_abstract抽象类
- Activity页面之间的切换效果
- hdu 1728 逃离迷宫
- Hibernate进阶之组件类型认识和双向一对多关系混合映射
- php异步处理
- 《javascript高级程序设计》客户端检测学习笔记
- Httpclient4 简介
- 导出推送证书
- 线性结构常见应用之二——队列
- makefile 学习(一)
- 写文件的流程
- 基本数据结构——单链表
- php调用c接口