标签: php

  • 调整宝塔面板PHP8.2的APCu扩展性能

    调整宝塔面板PHP8.2的APCu扩展性能

    调整宝塔面板PHP8.2的APCu扩展性能

    image-20241116073836145

    在PHP8.2的配置文件中搜索APCu,找到如下内容:

    extension = /www/server/php/82/lib/php/extensions/no-debug-non-zts-20220829/apcu.so

    在其下方添加:

    ; APCu Extension Configuration
    ; 加载APCu扩展
    extension = /www/server/php/82/lib/php/extensions/no-debug-non-zts-20220829/apcu.so
    ; 设置共享内存大小,单位为字节,这里设置为64MB
    apc.shm_size = "64M"
    ; 设置缓存条目的默认生存时间,单位为秒,这里设置为7200秒(2小时)
    apc.ttl = 7200
    ; 设置垃圾回收的最大生存时间,单位为秒,这里设置为3600秒(1小时)
    apc.gc_ttl = 3600
    ; 禁用文件存储缓存,减少磁盘I/O
    apc.enable_file_store = 0
    ; 允许在CLI模式下使用APCu
    apc.enable_cli = 1
    ; 设置缓存压缩比率,只有当压缩后的数据大小是原始大小的20%时,数据才会被压缩
    apc.compress_rratio = 0.2
    ; 提供关于预期缓存文件和用户缓存数量的提示,以帮助APCu更好地分配内存
    apc.num_files_hint = 1000
    apc.user_entries_hint = 1000
    ; 禁用文件锁,可能会提高性能,但在某些情况下可能会导致数据不一致
    apc.file_update_protection = 0
    ; 在APCu扩展导致核心转储时,帮助调试
    ;apc.coredump_unmap = 1

    然后重启PHP服务。

  • Echarts PHP MySQL 调用实例

    Echarts PHP MySQL 调用实例

    Apache ECharts

    image-20221102132955203

    ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE9/10/11,Chrome,Firefox,Safari等),底层依赖矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。

    ECharts 提供了常规的折线图柱状图散点图饼图K线图,用于统计的盒形图,用于地理数据可视化的地图热力图线图,用于关系数据可视化的关系图treemap旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图仪表盘,并且支持图与图之间的混搭。

    image-20221102133119573

    连接数据库

    创建sql_config.php

    <?php
        $mysql_server_name='127.0.0.1'; //mysql数据库服务器
        $mysql_username='cs'; //mysql数据库用户名
        $mysql_password='123456'; //mysql数据库密码,初始默认密码为空
        $mysql_database='cs'; //mysql数据库名
     ?>

    因为是测试用的甲骨文云服务器,就不再做脱敏了,以下亦同。

    读取并处理数据库数据

    <?php
    //这部分的功能是读表数据并且转为json格式,便于js处理。
      require("sql_config.php");
      $conn=mysqli_connect($mysql_server_name,$mysql_username,$mysql_password) or die("error connecting");
      mysqli_query($conn,"set names 'utf8'"); //数据库输出编码
      mysqli_select_db($conn,$mysql_database); //打开数据库
      $result = mysqli_query($conn,"select * from wp_statistics_visit");//打开你的表
      $data="";
      $array= array();
      class User{
        public $last_counter;
        public $visit;
      }
      while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)){
        $user=new User();
        $user->last_counter = $row['last_counter'];
        $user->visit = $row['visit'];
        $array[]=$user;
      }
      $data=json_encode($array);
      // echo "{".'"user"'.":".$data."}";
      echo $data;
    ?>

    数据呈现

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>访问统计</title>
        <script type="text/javascript" src="https://www.guohao.asia/cdn/echarts-5.4.0/dist/echarts.js"></script>
        <script type="text/javascript" src="https://www.guohao.asia/cdn/jquery-3.6.1.min.js"></script>
    
    </head>
    <body>
        <div style="position: relative; overflow: hidden; width: 600px; height: 400px; padding: 0px; margin: 0px; border-width: 0px; cursor: default;">
        <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
        <div id="bar" style="height:400px"></div>
        <script type="text/javascript">
                  var  myChart = echarts.init(document.getElementById('bar'));
                  var arr1=[],arr2=[];
                  function arrTest(){
                    //这个功能块的作用就是读取json数据。
                    $.ajax({
                      type:"post",//请求服务器载入数据
                      async:false,//异步属性
                      url:"bar.php",
                      data:{},
                      dataType:"json",
                      success:function(result){
                        if (result) {
                          for (var i = 0; i < result.length; i++) {
                              arr1.push(result[i].last_counter);
                              arr2.push(result[i].visit); //这边更新字段,可以只写你需要展示的字段。 
                          }
                        }
                      }
                    })
                    return arr1,arr2;
                  }
                  arrTest();
                  var  option = {
                  title : {
                        text: '访问数据',
                        subtext: '测试'},
    
                  //Bootstrap 提示工具(Tooltip)插件,鼠标悬停时候的提示框
                  tooltip: {
                  show: true
                  },
                  //图例
                  legend: {
                  data:['last_counter','visit']
                  },
                  //工具箱
                  toolbox: {
                        show : true,
                        feature : {
                             dataView : {show: true, readOnly: false},
                               magicType : {show: true, type: ['line', 'bar']},
                               restore : {show: true},
                               saveAsImage : {show: true}
                            }
                  },
                            calculable : true,
                  //x轴
                  xAxis : [
                  {
                  type : 'category',
                  data : arr1
                  }],
                  //y轴
                  yAxis : [
                  {type : 'value'}
                  ],
                  //需要展示的系列,根据需要
                  series : [
                   {
                   "name":"访问量",
                   "type":"bar",
                   "data":arr2,
                   markPoint : {
                                data : [
                                {type : 'max', name: '最大值'},
                                {type : 'min', name: '最小值'}
                                        ]
                                            },
                                markLine : {
                                data : [
                                {type : 'average', name: '平均值'}
                                       ]
                                            }
                            },
                        ]
                    };
                    // 为echarts对象加载数据
                    if (option && typeof option === "object") {
                          myChart.setOption(option, true);
                      }
        </script>
    </body>
    </html>

    效果

    image-20221102154211846
    image-20221102154232521
    image-20221102154251411

  • php操作mysql(一)

    php操作mysql(一)

    php操作mysql(一)

    mysqli_connect

    通过mysqli_connect新建数据库表。新建mysql.php,写入:

    <?php
    $dbhost = 'localhost';  // mysql服务器主机地址
    $username = 'cs';            // mysql用户名
    $dbpass = 'cs123456';          // mysql用户名密码
    $dbname = 'cs'; //mysql数据库名
    $conn = mysqli_connect($dbhost, $username, $dbpass,$dbname);
    if(! $conn )
    {
        die('连接失败: ' . mysqli_error($conn));
    }
    echo '连接成功<br />';
    $sql = "CREATE TABLE cs( ".
            "id INT NOT NULL AUTO_INCREMENT, ".
            "name VARCHAR(100) NOT NULL, ".
            "age VARCHAR(40) NOT NULL, ".
            "date DATE, ".
            "PRIMARY KEY ( id ))ENGINE=InnoDB DEFAULT CHARSET=utf8; ";
    mysqli_select_db( $conn, 'cs' );
    $retval = mysqli_query( $conn, $sql );
    if(! $retval )
    {
        die('数据表创建失败: ' . mysqli_error($conn));
    }
    echo "数据表创建成功\n";
    mysqli_close($conn); //断开连接
    ?>

    mysqli_connect(host, username, password, dbname,port, socket);

    参数描述
    host可选。规定主机名或 IP 地址。
    username可选。规定 MySQL 用户名。
    password可选。规定 MySQL 密码。
    dbname可选。规定默认使用的数据库。
    port可选。规定尝试连接到 MySQL 服务器的端口号。
    socket可选。规定 socket 或要使用的已命名 pipe。
    image-20221101170915977
AI 助手