标签:
业务需求要做到获取上传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
然后是表单:
表单注意APC_UPLOAD_PROGRESS的隐藏域一定要在file域之前
然后是查询进度的PHP文件
这样边上传的时候,边执行这个查询文件就可以看到上传进度了。
PS:补充一下,通常情况下该技巧只能是查询上传进度,作用不大。不过当乱序上传分片文件的情况下,PHP端要知道正在上传的分片(才方便告诉客户端下一片是什么),那么就显得比较有意义了。
标签:
原文地址:http://www.cnblogs.com/zhizhong/p/4335428.html