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

本文介绍了一种利用APC扩展实现PHP文件上传进度跟踪的方法。通过设置配置项并利用隐藏字段APC_UPLOAD_PROGRESS,可以实时获取上传进度。此技巧对于需要监控文件上传状态的应用特别有用。
业务需求要做到获取上传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

然后是表单:

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

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

<?php
print_r(apc_fetch("upload_abc"));

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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hello和和

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值