php方法点

1.测试代码块的运行时间(优化代码使用)

//分别测试fun1和fun2的运行时间
$etime1=microtime(true);
    $this->logic->func1($doc, $params,$status=0,$source=1);
$etime2=microtime(true);
print_r($etime2-$etime1.'--');
     $this->func2($doc,$params);
$etime3=microtime(true);
print_r($etime3-$etime2.'--');

2.生成不重复的随机数

  • @param int $start 需要生成的数字开始范围
  • @param int $end 结束范围
  • @param int $length 需要生成的随机数个数
  • @return array 生成的随机数
function get_rand_number($start=1,$end=10,$length=4){
    $connt=0;
    $temp=array();
    while($connt<$length){
        $temp[]=mt_rand($start,$end);
        $data=array_unique($temp);
        $connt=count($data);
    }
    sort($data);
    return $data;
}

3.将字符串分割为数组

$str='abcde';
str_plite($str);
打印结果如下:
Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
)

 * @param  string $str 字符串
 * @return array       分割得到的数组
 
function mb_str_split($str){
    return preg_split('/(?<!^)(?!$)/u', $str );
}
$str='白俊遥博客';
mb_str_split($str);
打印结果如下:
Array
(
    [0] => 白
    [1] => 俊
    [2] => 遥
    [3] => 博
    [4] => 客
)

4.验证是否是邮箱

 * @param  string  $email 邮箱
 * @return boolean        是否是邮箱

function is_email($email){
    if(filter_var($email,FILTER_VALIDATE_EMAIL)){
        return true;
    }else{
        return false;
    }
}
var_dump(is_email('baijunyao@baijunyao.com'));
// 打印 ture
var_dump(is_email('baijunyao.com'));
// 打印 false

5.array_merge(坑)用法注意

如果传的参数中有一个不是数组,则返回null
此处需要注意在开发过程中
我们可能需要把两次查询的数据合并成一个数组
如果有一个查询为空
那么使用array_merge函数合并的结果就是null;

$a=array(
    1=>1,
    6=>6
    );
$b='';
$result=array_merge($a,$b);
var_dump($result);

输出如下:null

因此;在不确定需要array_merge的数组是否有空值的时候;直接使用(array)强制转数组;上面的代码就可以改成如下形式

$result=array_merge((array)$a,(array)$b);

6.strpos用法注意

// 判断‘白俊遥博客1’中是否存在‘1’这个数字
$haystack='白俊遥博客1';
$needle=1;
if (strpos($haystack, strval($needle))===false) {
    // 如果不存在执行此处代码
    echo '不存在';
}else{
    // 如果存在执行此处代码
    echo '存在';
}

7.尽量少预定义变量

$about = 'A very long string of text';    // uses 2MB memory
echo $about;

// VS

echo 'A very long string of text';        // uses 1MB memory

8.数据库字符集设定utf8mb4

为了确保你的字符串从 PHP 到 MySQL都使用 UTF-8,请检查确认你的数据库和数据表都设定为 utf8mb4字符集和整理,并且确保你的 PDO 连接请求也使用了 utf8mb4 字符集。这是 非常重要 的。

9.Apache的ab压力测试

-n1000:请求数:1000, -c100:并发数:100

进入目录下:-> cd /usr/bin/

运行-> ab -n1000 -c100 http://www.qswk2017.ocm/

10.nginx下隐藏url中的index.php

location / { if (!-e $request_filename){ rewrite ^/(.*)$ /index.php/$1 last; } }

11.获得手机归属地

function phonenumberinfo($phone){
$list = array();
$soap = new SoapClient('http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl');
$result =(array) $soap->getMobileCodeInfo(array(
'mobileCode'=>$phone
));
list($moblie,$location,$lbs) = explode(' ', $result['getMobileCodeInfoResult']);
if($lbs){
$type = array('移动','电信','联通');
foreach($type as $key=>$value){
$ps = strpos($lbs, $value);
if($ps){
$procver = substr($lbs, 0,$ps);
$list['province'] = $procver;
$list['operator'] = $value;
$list['city'] = $location;
$list['type'] = $key;
break;
}
}
return $list;
}
}

12.对象数组互转

//数组转为对象
function arrayToObject($e){
    if( gettype($e)!='array' ) return;
    foreach($e as $k=>$v){
        if( gettype($v)=='array' || getType($v)=='object' )
            $e[$k]=(object)arrayToObject($v);
    }
    return (object)$e;
}

//对象转为数组
function objectToArray($e){
    $e=(array)$e;
    foreach($e as $k=>$v){
        if( gettype($v)=='resource' ) return;
        if( gettype($v)=='object' || gettype($v)=='array' )
            $e[$k]=(array)objectToArray($v);
    }
    return $e;
}

13.redis处理

并发不高的情况: 读: 读redis->没有,读mysql->把mysql数据写回redis,有的话直接从redis中取; 写: 写mysql->成功,再写redis;

并发高的情况: 读: 读redis->没有,读mysql->把mysql数据写回redis,有的话直接从redis中取; 写:异步话,先写入redis的缓存,就直接返回;定期或特定动作将数据保存到mysql,可以做到多次更新,一次保存;

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值