zoukankan      html  css  js  c++  java
  • ThinkPhp6 learn2020-03-04总结

    TP6【更新时间:2020-03-04 13:08】

    慕课链接:https://coding.imooc.com/class/407.html#Anchor

    php-snowflake雪花算法(创建订单号唯一,重复几率极低)

    https://github.com/godruoyi/php-snowflake

    安装:
    composer create-project topthink/think 自己定义的项目目录

    更新:
    composer update topthink/framework

    php扩展:
    composer require topthink/think-multi-app
    composer require topthink/think-view          //  视图

    composer require topthink/think-captcha        //  验证码
    Controller只获取参数,
    
    Service 进行页面处理
    
    Model 只查询数据库
    -----------------------现在的努力是为了小时候吹过的牛逼!Deng
    declare(strict_types==1);
    namespace .....
    public function smsSend :object(){} :bool()

    redis-server*
    ./redis-cli
    set abd 1
    get abd
    "1"
    -------------------------
    查找单条记录:不存在抛异常
    query()->findOrFail()


    -------------------------
    common/:
        /business  只做逻辑处理(constroller只获取参数)
        /lib    ①:sms    Alisms②:Num.php
        /model    只查询数据库
        /exception 公共的全局异常处理
        /validate  只验证参数(可以放到controller)
    -------------------------

    getUserById
    updateUserById()

    -------------------------
    事务
    $this->model->startTrans();

    $this->model->commit();
    $this->model->rollback();


    ----------------------------
    如何根据日志来分析当前qps高点和低点:
    
    cat  access.log | awk '{print $4}' | uniq -c | sort -r 
    Mysql 建立索引

    字段名 NORMAL BTREE
    commonlibNum  

    declare(strict_types==1); class Num public status function getCode(int $len = 4) :int{   $code = rand(1000,9999);   if ($len == 6) {     $code = rand(1000000,999999);   } }
    php模板View
    config/view.php

    'tpl_replace_string'=>[
      '{__STATIC_PATH}' => '/static/',
    ]
    ------------
    域名/captcha
    {:captcha_img(''),95,40}
    {:url('verify/index')}
    public function __construct(App $app)
    {
       $this->app = $app;
       $this->request = $this->app->request;
      
       //           控制器初始化
       $this->initialize();
    }
    获取数据(param)
    //  不存在时,默认值为1,  只获取整数形数据
    $data = $this->request->param('type_id',1,"intval");

    二:
    use thinkfacadeRequest;

    public function index(Request $request)
    {
      dump($request->param('type_id'));
      
    //  方法三:
      dump(input('type_id'));
    //  方法四
      dump(request()->param('type_id'));
    //  方法五:(门面模式)
      dump(Request::param('type_id'));
    }

    public function __call($name,$param)
    {
          返回控制器不存在/方法不存在    时
    }


     打印sql

    fetchSql()->find()打印sql

    二:
    Db::getLastSql();exit;
    模型ORM
    
    public function getStatusTextAttr($value,$data)
    {
      $array = [
        '1' => '已发布'
      ]
      return $status[$data['status']] }
    array_column('数组','数组中的key')
    array_key($key),  只获取key,array

    <?php
    // 表示由数据库返回的可能记录集的数组
    $a = array(
      array(
        'id' => 5698,
        'first_name' => 'Bill',
        'last_name' => 'Gates',
      ),
      array(
        'id' => 4767,
        'first_name' => 'Steve',
        'last_name' => 'Jobs',
      )
    );
    
    $last_names = array_column($a, 'last_name');
    print_r($last_names);
    ?>
    -----------------------------
    Array
    (
      [0] => Gates
      [2] => Zuckerberg
    )
    
    
    $where[] = ['pid','in',$pid]
    $where[] = ['pid','in',$pid]
    
    尽量使用oRM
    $query->where('pid','<>',$pid)
    public function __constroller()
    {
      $this->mobile = new Order();
    }
    public function searchAddTimeAttr($query, $value) { $query->whereBetweenTime('add_time',$value['0'],$value['1']); } public function getListData() { $this->withSearch($likeKeys, $data); }
    $this->hasOne(Googs::class,'','[外键id==Goods的id]','自己对应id')

    $this->model->with('goods')->find(1)
    redis
    pv+1
    Cache::inc('mall_pv_'.$id)

    使用redis保存购物车信息
    num+之前保存的num

    Cache::hser()
    Cache::hget()
    Cache::hGetAll()
    //  数组数量
    $count = Cache::hLen()
    intval($count)

    cart;购物车
    保存redis值时,增加add_time,方便排序

    $data = array_mcolumn($result,'add_time')
    array_multisort($data,SORT_DESC,$result)    true,false

    ArrSortByKey

    【分布式发号器】!!!
    创建订单号: 雪花算法
    $wordId = rand(1,1023);
    $orderId = Snowflake::getInstance()->setWorkId($workId)->id();

    .

    
    
  • 相关阅读:
    获取request错误信息
    request error: Connection aborted.', error(113, 'No route to host')
    python yield
    mysql 2003: Can't connect to MySQL server on '127.0.0.1:3306' (99)
    top查看特定pid
    Producer-consumer problem in Python
    ubuntu16.04 安装opencv3.3
    ubuntu 安装MySQLdb
    ElasticSearch mapping
    ubuntu 安装qq方案
  • 原文地址:https://www.cnblogs.com/vip-deng-vip/p/12408161.html
Copyright © 2011-2022 走看看