PHP配合apc實現上傳進度條

PHP配合apc實現上傳進度條PHP配合apc實現上傳進度條, 一直覺得PHP是沒法作到進度條一個動態的功能,原來仍是本身的知識面不夠,看到了apc擴展相關的一些文章,利用apc擴展達到了動態實現效果。根據找到相關的文章本身並在此基礎上作了一些小修改。本身的服務器用的window,在這裏主要針對的是window上的應用。javascript

1.服務器要支持apc擴展,沒有此擴展的話,百度一下php_apc.dll ,下載一個擴展擴展要求php.5.2以上。php

2.配置apc相關配置,重啓apachePHP Code複製內容到剪貼板java

extension=php_apc.dll
apc.rfc1867 = on
apc.max_file_size = 1000M
upload_max_filesize = 1000M
post_max_size = 1000Mjquery

說明一下:至於參數要配多大,得看項目須要apc.max_file_size, 設置apc所支持上傳文件的大小,要求apc.max_file_size <=upload_max_filesize 而且apc.max_file_size <=post_max_size.從新啓動apache便可實現apc的支持.ajax

3.在代碼裏面利用phpinfo();查看apc擴展安裝了沒有。apache

4.下面是實現代碼:json

getprogress.phpPHP Code複製內容到剪貼板
session_start();
if(isset($_GET['progress_key'])) {
$status = apc_fetch('upload_'.$_GET['progress_key']);
echo ($status['current']/$status['total'])*100;
}
?>
upload.phpPHP Code複製內容到剪貼板
$id = $_GET['id'];
?>
"multipart/form-data" id="upload_form" action="target.php"
method="POST">
"hidden" name="APC_UPLOAD_PROGRESS"
id="progress_key" value=""/>
"file" id="test_file" name="test_file"/>
"window.parent.startProgress(); return true;"
type="submit" value="上傳"/>
target.phpPHP Code複製內容到剪貼板
set_time_limit(600);
if($_SERVER['REQUEST_METHOD']=='POST') {
move_uploaded_file($_FILES"test_file",
dirname($_SERVER['SCRIPT_FILENAME'])."/UploadTemp/" .
$_FILES"test_file");//UploadTemp文件夾位於此腳本相同目錄下
echo "上傳成功";
}
?>
index.phpPHP Code複製內容到剪貼板
$id = md5(uniqid(rand(), true));
?>
"js/jquery-1.4.4.min.js" language="javascript">
"javascript">
var proNum=0;
var loop=0;
var progressResult;
function sendURL() {
$.ajax({
type : 'GET',
url : "getprogress.php?progress_key=",
async : true,
cache : false,
dataType : 'json',
data: "progress_key=",
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);
}
"theframe" name="theframe"
src="upload.php?id="
style="border: none; height: 100px; width: 400px;" >
"progressouter" style="width: 500px; height: 20px; border: 6px solid red;
display:none;">
"progressinner" style="position: relative; height: 20px; background-color:
purple; width: 0%; ">
'showNum'>
'showNum2'>服務器

相關文章
相關標籤/搜索