手机版

PHP的APC模块实现了进度条的上传

时间:2021-09-29 来源:互联网 编辑:宝哥软件园 浏览:

APC模块,全称是备选PHP缓存。Apc可以缓存所有PHP代码。此外,它还可以提供一定的内存缓存功能。但是,这个功能并不完善。据悉,如果频繁使用APC缓存的写功能,将导致不可预测的错误。如果想使用这个函数,可以看看与APC缓存相关的几个函数,比如APC _ fetch和APC _ store。可喜的是,APC从5月2日起加入了APC_UPLOAD_PROGRESS,解决了进度条的老大难问题。此外,它改变了原来上传时将所有临时文件缓存到内存中的方法,在临时文件达到设定值时自动保存到硬盘中,有效提高了内存的利用率。其工作原理是在上传时给每个上传者一个唯一的ID。当PHP脚本收到上传的文件时,解释器会自动检查$_POST数组中名为APC_UPLOAD_PROGRESS的隐藏字段,该字段将成为一个缓存变量来存储关于上传的信息,这样脚本就可以通过上传的ID来访问上传文件的状态信息。

!以下是上传表单formenctype=' multipart/form-data ' id=' UPLOAD _ form ' action=' method=' POST ' input type=' hidden ' name=' APC _ UPLOAD _ PROGRESS ' id=' PROGRESS _ key ' value=' upid '/Video title:输入类型=' text ' id=' subject ' name=' subject '/Video description:输入类型=' text ' id=' content ' name=' content '/Video TAG(用逗号分隔)。type=' text ' id=' tag ' name=' tags '/type=' file ' id=' upfile ' name=' upfile '/type=' submit ' id=' file submit ' value=' upload ' onclick=' start progress(' upid ')。返回真;' /!请注意,开始进度(' upid ')中的参数是您从PHP /form分配的唯一上传参数!以下是上传进度条div id=' upstatus ' style=' width : 500 px;height: 30pxborder: 1px实心# # ffffdecolor: # 796140/div div id=' progress outer ' style=' width : 500 px;height: 20pxborder: 3px实心# de7e00display:nonediv id=' progressiner ' style=' position : relative;height: 20pxcolor: # 796140背景-color : # f6d 095;宽度:0%;/div/div是APC_UPLOAD_PROGRESS的隐藏字段。只有使用它,脚本才能访问当前上传文件的状态。最好添加一个div来显示上传状态。下面是一个处理Ajax的脚本,使用Jquery框架和json来传递消息。

函数GetProgreSs(upid){ var URL=' { $ site URL } epad min/upprocess ';$.getJSON(url,{ progress_key: upid },function(JSON){ $(' # progressiner ')。宽度(JSON . per“%”);$ ('# upstatus ')。html('文件大小:' JSON.total' kb ' '上传: ' JSON . current ' KB ');if(JSON . per 100){ setTimeout(function(){ GetProgreSs(upid);}, 10);}else{$('#upstatus ')。html('视频上传完成,数据正在处理中,请稍候.');} })}函数startProgress(upid){ $(' # progress outer ')。CSS({ display : ' block ' });setTimeout(function(){ GetProgreSs(upid);}, 100);}接下来,阅读上传状态的PHP代码。至于上传文件的处理,可以按照自己的套路来写。//上传文件操作功能,可以根据自己的需要编写。

function uplvaction(){ if($ _ SERVER[' REQUEST _ METHOD ']==' POST '){ $ subject=trim($ this-f-filter($ this-_ REQUEST-getPost(' subject '))));$ content=trim($ this-f-filter($ this-_ request-getPost(' content ')));Zend _ loader :3360 load class(' Custom _ FlvOp ');$ flv=new Custom _ FlvOp$flv-uploadFlv('upfile ',$subject,$ content);} }//这是读取上传状态的函数~ ~ Function upper ession(){ if(isset($ _ get[' progress _ key '])){ $ status=APC _ fetch(' upload _ ')。$ _ get[' progress _ key ']);$ JSON=array(' per '=$ status[' current ']/$ status[' total ']* 100、' total '=round($ status[' total ']/1024)、' current '=round($ status[' current ']/1024)、);require _ once(' Zend/Json . PHP ');echo Zend _ js : encode($ JSON);}}好了,现在可以在自己的站点部署了。看效果酷不酷?

以上是用PHP的APC模块制作上传进度条的要点介绍,希望对大家的学习有所启发,有所帮助。

版权声明:PHP的APC模块实现了进度条的上传是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。