码迷,mamicode.com
首页 > Web开发 > 详细

PHP通过APC获取上传文件进度

时间:2015-03-13 18:03:47      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

业务需求要做到获取上传POST文件的进度,通常情况下PHP脚本要在POST上传文件完成之后再执行,所以在脚本内是没办法直接取得上传速度,不能像取得执行时间那样在<?php开头加个时间然后结束的时候再加时间相减。

首先想到的方法是通过ajax,在上传之前先给发个请求到服务器记录一下当前时间,然后再post文件。
当然这个不是解决方案,只能知道文件上传开始的大约时间,和结束时间,进度是不知道的。

在网上查了一下:

http://www.cnblogs.com/yjf512/p/3173457.html
http://www.laruence.com/2011/10/10/2217.html

有两种方法,一个是5.2以上的APC,一个是PHP5.4的session机制。因为SESSION机制要求5.4,所以还是选择APC吧,APC准备是集成到PHP里面了,这个东西太好用了!

PHP手册说明:http://cn2.php.net/manual/en/apc.configuration.php#ini.apc.rfc1867

APC首先要确定配置
apc.rfc1867=on

然后是表单:

 

  1. <form enctype="multipart/form-data" action="up4.php" method="POST">  
  2.     <input type="hidden" name="APC_UPLOAD_PROGRESS" value="abc"/>  
  3.     Send this file: <input name="userfile" type="file" />  
  4.     <input type="submit" value="Send File" />  
  5. </form>  


表单注意APC_UPLOAD_PROGRESS的隐藏域一定要在file域之前
然后是查询进度的PHP文件

 

 

  1. <?php  
  2. print_r(apc_fetch("upload_abc"));  

 

这样边上传的时候,边执行这个查询文件就可以看到上传进度了。

PS:补充一下,通常情况下该技巧只能是查询上传进度,作用不大。不过当乱序上传分片文件的情况下,PHP端要知道正在上传的分片(才方便告诉客户端下一片是什么),那么就显得比较有意义了。

 

PHP通过APC获取上传文件进度

标签:

原文地址:http://www.cnblogs.com/zhizhong/p/4335428.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!