欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

PHP配合apc实现上传进度条

程序员文章站 2022-04-11 21:39:57
...
PHP配合apc实现上传进度条, 一直以为PHP是无法做到进度条一个动态的功能,原来还是自己的知识面不够,看到了apc扩展相关的一些文章,利用apc扩展达到了动态实现效果。根据找到相关的文章自己并在此基础上做了一些小修改。自己的服务器用的window,在这里主要针对的是window上的应用。
1.服务器要支持apc扩展,没有此扩展的话,百度一下php_apc.dll ,下载一个扩展扩展要求php.5.2以上。
2.配置apc相关配置,重启apache

PHP Code

  1. extension=php_apc.dll
  2. apc.rfc1867 = on
  3. apc.max_file_size = 1000M
  4. upload_max_filesize = 1000M
  5. post_max_size = 1000M

说明一下:至于参数要配多大,得看项目需要apc.max_file_size, 设置apc所支持上传文件的大小,要求apc.max_file_size 3.在代码里面利用phpinfo();查看apc扩展安装了没有。
4.下面是实现代码:
getprogress.php

PHP Code

  1. session_start();
  2. if(isset($_GET['progress_key'])) {
  3. $status = apc_fetch('upload_'.$_GET['progress_key']);
  4. echo ($status['current']/$status['total'])*100;
  5. }
  6. ?>

upload.php

PHP Code

  1. $id = $_GET['id'];
  2. ?>
  3. id="progress_key" value=""/>

  4. type="submit" value="上传"/>


target.php

PHP Code

  1. set_time_limit(600);
  2. if($_SERVER['REQUEST_METHOD']=='POST') {
  3. move_uploaded_file($_FILES["test_file"]["tmp_name"],
  4. dirname($_SERVER['SCRIPT_FILENAME'])."/UploadTemp/" . $_FILES["test_file"]["name"]);//UploadTemp文件夹位于此脚本相同目录下
  5. echo "

    上传成功

    ";
  6. }
  7. ?>

index.php

PHP Code

  1. $id = md5(uniqid(rand(), true));
  2. ?>
  3. 上传进度
  4. var proNum=0;
  5. var loop=0;
  6. var progressResult;
  7. function sendURL() {
  8. $.ajax({
  9. type : 'GET',
  10. url : "getprogress.php?progress_key=",
  11. async : true,
  12. cache : false,
  13. dataType : 'json',
  14. data: "progress_key=",
  15. success : function(e) {
  16. progressResult = e;
  17. proNum=parseInt(progressResult);
  18. document.getElementById("progressinner").style.width = proNum+"%";
  19. document.getElementById("showNum").innerHTML = proNum+"%";
  20. if ( proNum
  21. setTimeout("getProgress()", 100);
  22. }
  23. }
  24. });
  25. }
  26. function getProgress(){
  27. loop++;
  28. sendURL();
  29. }
  30. var interval;
  31. function startProgress(){
  32. document.getElementById("progressouter").style.display="block";
  33. setTimeout("getProgress()", 100);
  34. }





  • 相关标签: nbsp quot lt gt PHP

    上一篇: PHP的Yii框架使用中的一些错误解决方法与建议,yii框架_PHP教程

    下一篇: 详解nodejs实现简单的gulp打包

    推荐阅读