Home > Backend Development > PHP Tutorial > PHP's APC module implements upload progress bar, phpapc module progress bar_PHP tutorial

PHP's APC module implements upload progress bar, phpapc module progress bar_PHP tutorial

WBOY
Release: 2016-07-12 09:06:25
Original
926 people have browsed it

PHP's APC module implements the upload progress bar, phpapc module progress bar

APC module, its full name is Alternative PHP Cache. APC can cache all PHP code. In addition, it can provide a certain memory caching function. However, this function is not perfect. There are reports that if the write function of APC cache is used frequently, it will lead to unpredictable errors. If If you want to use this function, you can take a look at apc_fetch, apc_store and other functions related to apc cache.
What is gratifying is that starting from 5.2, APC has added APC_UPLOAD_PROGRESS, which solves the progress bar problem that has been bothering everyone for a long time. And it changed the original method of caching all temporary files into the memory during uploading to automatically saving them to the hard disk when the temporary files reach the set value, which effectively improved the memory utilization.
Its working principle is to give each upload a unique ID when uploading. When the PHP script receives an uploaded file, the interpreter will automatically check the $_POST array named Hidden field of APC_UPLOAD_PROGRESS, which will become a cache variable that stores information about the upload, so that scripts can access the status information of the uploaded file through the upload ID.

<!–以下为上传表单–>
<form enctype="multipart/form-data" id="upload_form" action="" method="POST">
<input type="hidden" name="APC_UPLOAD_PROGRESS" id="progress_key" value="upid"/>
视频标题:<input type="text" id="subject" name="subject"/>
视频说明:<input type="text" id="content" name="content"/>
视频TAG(以逗号分割)<input type="text" id="tag" name="tags"/>
<input type="file" id="upfile" name="upfile"/>
<input type="submit" id="filesubmit" value="上传" onclick="startProgress(‘upid'); return true;"/>
<!–注意:startProgress(‘upid')中的参数是你从php中分配的唯一上传参数–>
</form>
<!–以下为上传进度条–>
<div id="upstatus" style="width: 500px; height: 30px; border: 1px solid ##ffffde; color:#796140;">
</div
<div id="progressouter" style="width: 500px; height: 20px; border: 3px solid #de7e00; display:none;">
<div id="progressinner" style="position: relative; height: 20px; color:#796140; background-color: #f6d095; width: 0%; "></div>
</div>
Copy after login

The most important thing is the hidden field of APC_UPLOAD_PROGRESS. With it, the script can access the status of the currently uploaded file, and just add a div to display the upload status.
The following is a script for processing Ajax, using the Jquery framework and json to deliver messages.

function getProgress(upid){
var url = "<{$siteurl}>epadmin/upprocess";
$.getJSON(
url,
{ progress_key: upid },
function(json){
$("#progressinner").width(json.per+"%");
$("#upstatus").html(‘文件大小:'+json.total+‘KB'+‘ 已上传:'+json.current+‘KB');
if (json.per < 100){
setTimeout(function(){
getProgress(upid);
}, 10);
}else{
$("#upstatus").html("视频上传完成,正在处理数据,请稍后……");
}
}
)
}
function startProgress(upid){
$("#progressouter").css({ display:"block" });
setTimeout(function(){
getProgress(upid);
}, 100);
}
Copy after login

The next step is to read the PHP code for upload status. As for the processing of uploaded files, you can write it as usual.
//Upload file operation function, you can write it according to your own needs

function upflvAction()
 {
 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::loadClass(‘Custom_FlvOp');
 $flv = new Custom_FlvOp;
 $flv->uploadFlv(‘upfile',$subject,$content);
 }
 }
 //这就是读取上传状态的函数了~~
 function upprocessAction()
 {
 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_Json::encode($json);
 }
 }
Copy after login

Okay, now you can deploy it on your own site and see for yourself how cool the effect is?

The above is an introduction to the key points of creating an upload progress bar using PHP's APC module. I hope it will inspire everyone's learning and be helpful to everyone.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1065580.htmlTechArticlePHP’s APC module implements the upload progress bar, the phpapc module progress bar APC module, its full name is Alternative PHP Cache. APC can cache all PHP codes. In addition, it can provide a...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template