css 完美垂直居中解决方案兼容ie8以上等其他浏览器

css 完美垂直居中解决方案兼容ie8以上等其他浏览器

<!DOCTYPE html>
<html>
<head>
    <title>DIV水平垂直居中 </title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style type="text/css">
        #outer {
            display:table;
            height:400px;
            #position:relative;
            overflow:hidden;
        }
        #middle {
            width:300px;
            height: 400px;;
            display:table-cell;
            vertical-align:middle;
            #position:absolute;
            #top:50%;
            background: #F0E68C;
        }
        #inner {
            #position:relative;
            #top:-50%;

        }
    </style>
</head>
<body>
<div id="outer">
    <div id="middle">
        <div id="inner">
           水平居中</br>
           水平居中</br>
           水平居中</br>
           水平居中</br>
        </div>
    </div>
</div>
</body>
</html>
<script type="text/javascript">
    //显示浏览器版本
    document.getElementById('ver').innerHTML = navigator.userAgent;
</script>

linux mysql内存使用率

linux mysql内存使用率

free -m | sed -n '2p' | awk '{print "used mem is "$3"M,total mem is "$2"M,used percent is "$3/$2*100"%"}' 

关于 linux内存使用率为什么那么高看下面吧 总结下 实际的使用内存 其实没那么多

Linux开机后,使用top命令查看,4G物理内存发现已使用的多大3.2G,占用率高达80%以上:

Mem: 3889836k total, 3341868k used, 547968k free, 286044k buffers

Swap: 6127608k total, 0k used, 6127608k free, 1554888k cached

如上红色数字部分,使用free查看结果如下:

[root@rd01 ~]# free -m

total used free shared buffers cached

Mem: 3798 3264 534 0 279 1518

-/+ buffers/cache: 1466 2332

Swap: 5983 0 5983

红色数字部分已使用内存而已是3264M,那是不是表示系统内存就真的占用这么多呢,这可才运行了一个网站而已,不可能就被占用这么多啊!

注意看蓝底部分,这部分表示系统高速缓存所使用的内存,这部分内存可以随时分配给进程使用,因此,真正剩余内存应该free下534+2332=2866M,因此剩余物理内存应该为2866M,而不知534M。

因此查看目前进程正在实际被使用的内存,是used-(buffers+cache),也可以认为如果swap没有大量使用,mem还是够用的,只有mem被当前进程实际占用完(没有了buffers和cache),才会使用到swap的。

swoole不断的切换前端链接方法 防止攻击

php不断的切换前端链接方法 防止攻击

swoole写法 每分钟生成一次url后缀 返回到客户端让他们更新

//定时器要写在WorkerStart这个里面哦
$ws->on(‘WorkerStart’, function ($serv, $worker_id) {
/*1分钟更新一次url 防止ddos攻击*/
swoole_timer_tick(60000, function ($timer_id) use ($serv) {
$houzhui = getRandom(8, 1);
commonupdateinfo(array(‘houzhui’ => $houzhui), ‘id’, 1, ‘urlhouzhui’);

});
});






php这里也要更新  请求的接口地址也要读取数据库更新过来来弄
<pre>
 /*读取url后缀*/
        $sql = 'select houzhui from yinjiatoupiao_urlhouzhui1 where id=1 limit 1';
        $houzhui = $this->commongetinfo($sql)[0]['houzhui'];
        if (ACTION_NAME == "toupiao") {
            $pos = strpos(ACTION_NAME, strval($houzhui));
            if (!is_numeric($pos)) {
                if (isset($_SERVER["HTTP_X_REQUESTED_WITH"]) && strtolower($_SERVER["HTTP_X_REQUESTED_WITH"]) == "xmlhttprequest") {
                    echo json_encode(array('success' => 0, 'msg' => '请不要用微信自带的刷新,可以点击页面上底部菜单进行刷新'));
                    exit();
                } else {
                    header("Content-type:text/html;charset=utf-8");
                    echo "<script>alert('请不要用微信自带的刷新,可以点击页面上菜单底部进行刷新');</script>";
                    exit;
                };
            } else {
                $url = rtrim(ACTION_NAME, $houzhui);
                $this->$url();
                exit();
            }
        }

ps:前端 通过ajax来控制接口地址 先获取后zhui 接口地址+后缀+ 初始化首页生成的随机字符串 而不是刷新页面来改接口 而不是用长连接返回因为连接数太多消耗资源太大

css3软键盘不盖住输入框的方法

css3软键盘不盖住输入框的方法

弹出软键盘的时候 最外面的容器高度就发生了变化 要减去软键盘高度了

<div class="p1">
    <img class="p1_bg" src="/yaluquan/images/1/p1_bg.jpg" alt="">
    <input type="text" id="id_phone">
    <input type="text" id="id_xuliehao">
    <img class="p1_tijiao" src="/yaluquan/images/1/p1_tijiao.png" alt="">
</div>
.p1{
    width:100%;
    height: auto;
    overflow: hidden;
    position: relative;
}
.p1_bg{
    width:100%;
}
#id_xuliehao{
    width: 10.1rem;
    height: 1.3rem;
    position: absolute;
    left: 11%;
    top: 82.5%;
    border: none;
    background: url(/yaluquan/images/1/p1_ininput2.png);
    background-size: 100% 100%;
    padding-left: 3rem;
}

/*高度用js控制 别用height:100%不然被压扁的*/
     var bodyheight=$('body').height();
      $('.p1_bg').css('height',bodyheight);

PHP关于access_token失效问题

PHP关于access_token失效问题 有时候PHP设置了缓存 明明就是没有过期 但却提示失效
这情况一般就是
1 多个appid和secrete 生成的access_token互相覆盖了 所以 这种情况必须要区分
2 看看代码是不是多个地方生成access_token 当生成新的access_token旧的就会5分钟后失效 (一般发生别的项目也在有这个 所以把你这个覆盖了)

以上情况方法都不是那么就用下面方法
目前最稳妥的方法就是用swoole写定时器 每个小时刷新一下access_token 写入数据库

PHP array_multisort实现二维数组排序

PHP array_multisort实现二维数组排序

参数中的数组被当成一个表的列并以行来进行排序 – 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。

第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:

SORT_ASC – 默认,按升序排列。(A-Z)
SORT_DESC – 按降序排列。(Z-A)
随后可以指定排序的类型:

SORT_REGULAR – 默认。将每一项按常规顺序排列。
SORT_NUMERIC – 将每一项按数字顺序排列。
SORT_STRING – 将每一项按字母顺序排列


<?php 
   
    function my_sort($arrays,$sort_key,$sort_order=SORT_ASC,$sort_type=SORT_NUMERIC ){  
        if(is_array($arrays)){  
            foreach ($arrays as $array){  
                if(is_array($array)){  
                    $key_arrays[] = $array[$sort_key];  
                }else{  
                    return false;  
                }  
            }  
        }else{  
            return false;  
        } 
        array_multisort($key_arrays,$sort_order,$sort_type,$arrays);  
        return $arrays;  
    } 
   
    $person =  array( 
                    array('id'=>1,'name'=>'fj','weight'=>100,'height'=>180), 
                    array('id'=>2,'name'=>'tom','weight'=>53,'height'=>150), 
                    array('id'=>3,'name'=>'jerry','weight'=>120,'height'=>156), 
                    array('id'=>4,'name'=>'bill','weight'=>110,'height'=>190), 
                    array('id'=>5,'name'=>'linken','weight'=>80,'height'=>200), 
                    array('id'=>6,'name'=>'madana','weight'=>95,'height'=>110), 
                    array('id'=>7,'name'=>'jordan','weight'=>70,'height'=>170) 
                ); 
       
    var_dump($person); 
       
    $person = my_sort($person,'name',SORT_ASC,SORT_STRING); 
   
    var_dump($person); 
       
    $person = my_sort($person,'weight'); 
   
    var_dump($person); 
?>