求一利用php快速生成柱状图的函数,现以完成一个简易函数比较慢。该如何解决

php中文网
发布: 2016-06-13 10:27:15
原创
769人浏览过

求一利用php快速生成柱状图的函数,现以完成一个简易函数比较慢。
求一利用php快速生成柱状图的函数,现以完成一个简易函数比较慢。

由于初学,仅会操控CSS生成个简易的柱状图,但我的函数在数据大于25000条的时候超级慢,1万多一点的时候生成图的时间是10多秒。这速度太慢了,求大侠优化。

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><html><style type="text/css">.chart {    font-family: Tahoma;    font-size: 12px;    border: 1px solid #ccc;    width:auto;    float: left;    margin: 0;    padding: .4em .1em;    height:auto;}.chart ul {            margin:0px;    height:auto;    text-align: center;    display:block;    background-repeat: no-repeat;    background-position: center bottom;    background-attachment: fixed;}.chart li {    list-style: none;    float: left;    width: 35px;    height:200px;    text-align: center;    display:block;    background-repeat: no-repeat;    background-position: center bottom;    background-attachment: fixed;}.b {    display: block;    width:15px;    background-color:#000;    margin-right: auto;    margin-left: auto;    }.a {        height:12px;    width:35px;    background-color:#fff;                padding: 0px;}</style><?php $beg_time = microtime(true);$beg_time *= 1000 * 1000;create_chart2();function create_chart2() {//x一维数组直接输出图表       //思路先得到一个一维数组,然后统计值的个数,最后排序输出              //echo '<table>';       $returnarray2=array();       $db1=new mysqli('localhost','admin','admin','ssq') ;       $sql_query='select l1,l2,l3,l4,l5,l6 from hmk_temp_1 as bb limit 0,1000';       $res1=$db1->query($sql_query);        while($row1=mysqli_fetch_array($res1,MYSQLI_NUM)) {         $returnarray2=array_merge($returnarray2,$row1);        }       $array_values=array_count_values($returnarray2);       ksort($array_values);       //print_r($array_values);       $rates=round(200/max($array_values),2);       echo '$rates='.$rates;       echo '<div class="chart"> <p>一区</p>  <ul>';       foreach($array_values as $key=>$value){          echo '<li><span class="a" style="margin-top:'.(210-$value*$rates).'px;">' .$value.'</span><span class="b" style="height:'.($value*$rates).'px;">'.'</span><span class="a">'.$key.'</span></li>' ;       }    echo '</ul></div><p style="clear: both"></p>' ; //echo '</table>'; }$end_time = microtime(true);$end_time *= 1000 * 1000;echo "Total time used : " . ($end_time - $beg_time) . "ms" . PHP_EOL;   ?></html>
登录后复制


------解决方案--------------------
先找出瓶颈是在什么地方

有没考虑过使用 pChart?
------解决方案--------------------
Google有一个库提供。楼主可以查一下。
------解决方案--------------------
输出的 Total time used 看似巨大,但由于计量单位有误,就不足信了
microtime(true) 返回的是秒, * 1000 * 1000 后为微秒,你把它当做毫秒,就放大了 1000 倍

代码简单并不代表运行效率就高,看一下这个测试就知道了
PHP code
$s_time = microtime(true);$d = range(1, 33);$r = array();for($i=0; $i<font color="#e78608">------解决方案--------------------</font><br>建议楼主看看:ChartDirector软件,现在有破解的,很好用<div class="clear"></div>
登录后复制
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号