PHP配合apc实现上传进度条, 一直以为PHP是无法做到进度条一个动态的功能,原来还是自己的知识面不够,看到了apc扩展相关的一些文章,利用apc扩展达到了动态实现效果。根据找到相关的文章自己并在此基础上做了一些小修改。自己的服务器用的window,在这里主要针对的是window上的应用。
1.服务器要支持apc扩展,没有此扩展的话,百度一下php_apc.dll ,下载一个扩展扩展要求php.5.2以上。
2.配置apc相关配置,重启apache
PHP Code
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
3.在代码里面利用phpinfo();查看apc扩展安装了没有。
4.下面是实现代码:
getprogress.php
PHP Code
session_start();
if(isset($_GET['progress_key'])) {
$status = apc_fetch('upload_'.$_GET['progress_key']);
echo ($status['current']/$status['total'])*100;
}
?>
upload.php
PHP Code
$id = $_GET['id'];
?>
id="progress_key" value=""/>
type="submit" value="上传"/>
target.php
PHP Code
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 "上传成功
";
}
?>
index.php
PHP Code
$id = md5(uniqid(rand(), true));
?>
上传进度
<script></script>
<script> </script>
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
setTimeout("getProgress()", 100);
}
}
});
}
function getProgress(){
loop++;
sendURL();
}
var interval;
function startProgress(){
document.getElementById("progressouter").style.display="block";
setTimeout("getProgress()", 100);
}
Statement: 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