A-A+

用php写的进度条

2013年10月19日 PHP技术文章 评论 11 条 阅读 1,304 views 次

网站的进度条想必大家经常遇到过吧,在网站文件很大的情况下,如果没有一个进度条,那网站基本上都会被访客直接和谐掉,不会去等待超过 8 秒钟的时间,除非你是个很有耐心的人。。。

网站进度条的效果可以利用 JS 或者是 FLASH 的动画制作,在网站有引导页的情况下,基本上都是使用 FLASH 来制作一个精美的进度条效果,在点击进入主页时,基本上都是利用 JS 再加一张进度条的图片来实现网站进度条的效果。

那么作为 PHP 程序员,如何利用编程来实现网站进度条的效果呢?我们知道,想要网站出现进度条,必须在网站下载完所有文件之前,也就是打开之前出现,那么这里我们利用上传文件的功能来实现进度条的效果,假设要实现上传一个很大的文件,在上传完毕之前出现进度条效果,上传完毕则显示上传成功。

要上传的文件可以自定义,进度条的图片 pro.gif 也可以自己来定义,关于进度条的图片,网上有一大堆,自己去找一下,下面我们看一下源码:

<?php
set_time_limit("3600");
ob_end_clean();
for($i = 1;$i <= 300; $i++ ) echo(" "); 
$file="jicheng.rar";//你要上传的东东
$obj="upload/website.rar";//目标文件,就是文件上传到哪里
$length="100";//进度条长度,可能不准备
$pimg="pro.gif";//进度条图片
$csize="100000";//每次拷贝的尺寸,单位字节
 
$size=filesize($file);
if(file_exists($obj)&&is_file($obj)){
   $fsize=filesize($obj);
}
else{
   $fsize="0";
}
$data=fread(fopen("$file","rb"),$size);
$nums=ceil(($size-$fsize)/$csize);
echo"<img src=$pimg width=".floor($length*$fsize/$size)." height=10>";
for($i="0";$i<$nums;$i++){
   $start=$fsize+$i*$csize;
   $cdata=substr($data,$start,$csize);
   $msize=strlen($cdata);
   fwrite(fopen($obj,"ab"),$cdata);
echo"<img src=$pimg width=".floor($length*$msize/$size)." height=10>";
   flush();
   sleep(1);
}
echo"上传成功";
?> 

jicheng.rar 这是要上传的文件,如果想要查看网站进度条的效果,可以找一个压缩包稍微大点的文件,pro.gif 是进度条的图片,找一个网站进度条的图片放在根目录下即可,upload/ 上传的目录文件。。我们将要上传的文件和网站进度条的文件都放在根目录下,再新建 upload/ 上传目录就可以正常进行测试。

标签:

11 条留言  访客:11 条  博主:0 条

  1. 麦田一根葱

    确实对客户体验是一件好事

  2. 每天都有收获哈。

  3. 海棠果

    不错 用户体验很好

  4. 恋羽

    我怎么感觉我没看懂这个是干嘛的?

  5. 宋镇江

    其实也是一个心灵作用吧。没进度条,老多人都会以为卡住了..然后F5

  6. 李明

    试了,效果很好,网站一定不会被访客直接和谐掉了。

  7. 21氪

    要有个效果图啊

  8. 光的传人

    看来我得好好学学php了~

  9. PHP二次开发

    这个东西很有利于用户体验的。

  10. 海涛

    不错,进度条在网站中很有必要。。。

  11. 慢点博客

    进度条的文件体积是不是要尽量小?要不,连加载进度条就要花点时间了。

给我留言