php使用APC实现实时上传进度条功能


Posted in PHP onOctober 26, 2015

php不具备实时上传进度条功能,如果想有这种功能我们一般会使用ajax来实现,但是php提供了一个apc,它就可以与php配置实现上传进度条功能。
主要针对的是window上的应用。
1.服务器要支持apc扩展,没有此扩展的话,下载一个扩展扩展要求php.5.2以上。
2.配置apc相关配置,重启apache
代码如下

extension=php_apc.dll  
apc.rfc1867 = on  
apc.max_file_size = 1000M  
upload_max_filesize = 1000M  
post_max_size = 1000M   
说明一下:至于参数要配多大,得看项目需要apc.max_file_size,  设置apc所支持上传文件的大小,要求apc.max_file_size<=upload_max_filesize  并且apc.max_file_size <=post_max_size.重新启动apache即可实现apc的支持.
3.在代码里面利用phpinfo();查看apc扩展安装了没有。
4.下面是实现代码:
getprogress.php
代码如下 

<?php 
session_start(); 
if(isset($_GET['progress_key'])) { 
 $status = apc_fetch('upload_'.$_GET['progress_key']); 
 echo ($status['current']/$status['total'])*100; 
} 
?> 
upload.php
PHP Code
<?php 
 $id = $_GET['id']; 
?> 
<form enctype="multipart/form-data" id="upload_form" action="target.php" method="POST"> 
<input type="hidden" name="APC_UPLOAD_PROGRESS" 
 id="progress_key" value="<?php echo $id?>"/> 
<input type="file" id="test_file" name="test_file"/><br/> 
<input onclick="window.parent.startProgress(); return true;" 
 type="submit" value="上传"/> 
</form>

target.php
代码如下

<?php 
set_time_limit(600); 
if($_SERVER['REQUEST_METHOD']=='POST') { 
 move_uploaded_file($_FILES["test_file"]["tmp_name"], 
 dirname($_SERVER['SCRIPT_FILENAME'])."/UploadTemp/" . $_FILES["test_file"]["name"]);//UploadTemp文件夹位于此脚本相同目录下 
 echo "<p>上传成功</p>"; 
} 
?>

index.php
代码如下 

<?php 
 $id = md5(uniqid(rand(), true)); 
?> 
<html> 
<head><title>上传进度</title></head> 
<body> 
<script src="js/jquery-1.4.4.min.js" language="javascript"></script> 
 
 
<script language="javascript"> 
var proNum=0; 
var loop=0; 
var progressResult; 
function sendURL() { 
  $.ajax({ 
   type : 'GET', 
   url : "getprogress.php?progress_key=<?php echo $id;?>", 
   async : true, 
   cache : false, 
   dataType : 'json', 
   data: "progress_key=<?php echo $id;?>", 
   success : function(e) { 
     progressResult = e; 
     proNum=parseInt(progressResult); 
     document.getElementById("progressinner").style.width = proNum+"%"; 
     document.getElementById("showNum").innerHTML = proNum+"%"; 
     if ( proNum < 100){ 
     setTimeout("getProgress()", 100); 
     } 
     
   } 
  }); 
 
} 
 
function getProgress(){ 
 loop++; 
 
 sendURL(); 
} 
var interval; 
function startProgress(){ 
 document.getElementById("progressouter").style.display="block"; 
 setTimeout("getProgress()", 100); 
} 
</script> 
<iframe id="theframe" name="theframe" 
 src="upload.php?id=<?php echo $id; ?>" 
 style="border: none; height: 100px; width: 400px;" > 
</iframe> 
<br/><br/> 
<div id="progressouter" style="width: 500px; height: 20px; border: 6px solid red; display:none;"> 
 <div id="progressinner" style="position: relative; height: 20px; background-color: purple; width: 0%; "></div> 
</div> 
<div id='showNum'></div><br> 
<div id='showNum2'></div> 
</body> 
</html>

以上就是跟大家分享的php使用APC实现实时上传进度条功能的方法,希望对大家的学习有所帮助。

PHP 相关文章推荐
如何让CI框架支持service层
Oct 29 PHP
yii2超好用的日期组件和时间组件
May 05 PHP
php图片添加水印例子
Jul 20 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
Sep 11 PHP
PHP数据库处理封装类实例
Dec 24 PHP
Yii2配置Nginx伪静态的方法
May 05 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
Nov 21 PHP
PHP实现带进度条的Ajax文件上传功能示例
Jul 02 PHP
PHP如何防止用户重复提交表单
Dec 09 PHP
PHP执行系统命令函数实例讲解
Mar 03 PHP
php需登录的文件上传管理系统
Mar 21 #PHP
PHP文件缓存类实现代码
Oct 26 #PHP
php多线程实现方法及用法实例详解
Oct 26 #PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
Oct 26 #PHP
PHP和C#可共用的可逆加密算法详解
Oct 26 #PHP
日常整理PHP中简单的图形处理(经典)
Oct 26 #PHP
php 参数过滤、数据过滤详解
Oct 26 #PHP
You might like
星际争霸任务指南——人族
2020/03/04 星际争霸
PHP 替换模板变量实现步骤
2009/08/24 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
php实现向javascript传递数组的方法
2015/07/27 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
PHP实现计算器小功能
2020/08/28 PHP
Microsoft Ajax Minifier 压缩javascript的方法
2010/03/05 Javascript
JavaScript 打地鼠游戏代码说明
2010/10/12 Javascript
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
打印json对象的内容及JSON.stringify函数应用
2013/03/29 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
2016/01/24 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
js微信应用场景之微信音乐相册案例分享
2017/08/11 Javascript
微信小程序icon组件使用详解
2018/01/31 Javascript
详解Vue SPA项目优化小记
2018/07/03 Javascript
微信小程序实现下拉刷新动画
2019/06/21 Javascript
ES6 let和const定义变量与常量的应用实例分析
2019/06/27 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
Python深入学习之上下文管理器
2014/08/31 Python
python通过smpt发送邮件的方法
2015/04/30 Python
简单了解Django应用app及分布式路由
2019/07/24 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
2019/12/25 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
2021/01/26 Python
详解如何用HTML5 Canvas API控制图片的缩放变换
2016/03/22 HTML / CSS
美国著名的团购网站:Woot
2016/08/02 全球购物
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
中专毕业生自荐信范文
2013/11/28 职场文书
国际经济贸易专业自荐信
2014/06/13 职场文书
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
副乡长民主生活会个人对照检查材料思想汇报
2014/10/01 职场文书
优秀英文求职信范文
2015/03/19 职场文书
负责培养人意见
2015/06/05 职场文书