composer基础使用

Composer 需要 PHP 5.3.2+ 以上版本,且需要开启 openssl。

composer -v 查看版本

推荐使用阿里云全量镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
如仅当前项目使用则可去除-g选项。

取消配置:composer config -g --unset repos.packagist

- 阅读剩余部分 -

windows备份mysql脚本

windows下备份mysql数据库脚本,可添加到计划任务中实现定时自动备份。默认存储位置为d:\backup(注:为避免中文乱码,请使用ANSI保存)


    @echo off
    
    :begin
    rem 接收信息
    set input=
    set /p input=请输入数据库名称:
    
    if "%input%" == "" (
        goto begin
    )
    
    echo "正在备份 %input%"
    
    
    set yyyy=%date:~,4%
    set mm=%date:~5,2%
    set dd=%date:~8,2%
    if /i %time:~0,2% lss 10 set hh=0%time:~1,1%
    if /i %time:~0,2% geq 10 set hh=%time:~0,2%
    set mn=%time:~3,2%
    set ss=%time:~6,2%
    set date=%yyyy%%mm%%dd%
    set time=%hh%%mn%%ss%
    set filename=%date%_%time%
    
    ::设置备份目录
    set label=d:\
    set backDir=backup\
    set pwd=123456
    
    
    if exist %label%%backDir% (
        ::echo 目录%label%%backDir%已存在,无需创建
    ) else (
        echo 创建%label%%backDir%
        md %label%%backDir%
    )
    
    ::主要为当前正在开发的数据备份,已上线系统优先依据线上系统数据库
    
    "E:\wamp\bin\mysql\mysql5.7.31\bin\mysqldump">mysqldump --opt -P3306 -u root --password=%pwd% --databases %input% --single-transaction >%label%%backDir%%input%_%filename%.sql
    
    :: more...
    
    echo "完成备份 %input%"
    
    goto begin

检测文件大小脚本

check_file_size.sh

    #!/bin/bash
    
    #---------------------------------------
    # 检测文件大小
    # author: SenSen 1050575278
    # date: 2021/10/10
    # 注意:所有脚本需测试后方可使用!!!
    #---------------------------------------
    
    read -p "Tips! Enter fileName (like 'app/index/controller/Index.php') to continue : " input
    
    #获取当前时间
    curtime=`date +"%Y/%m/%d %H:%M:%S"`
    
    #所在目录
    dir='/web/oa/'
    
    #自动获取系统目录文件 仅可包含oa系统文件
    sysDir=`ls /web/oa`
    
    for f in ${sysDir}
        do
            /bin/ls -l ${dir}${f}/${input} | awk '{print $5}'
            echo ${f}
        done

检测数据库中指定表是否存在指定字段脚本

check_mysql_field_exist.sh

    #!/bin/bash
    
    #---------------------------------------
    # 检测数据库是否存在指定字段 变量1:表名 变量2:字段名
    # 注:数据库名同文件夹名
    # author: SenSen 1050575278
    # date: 2021/10/10
    # 注意:所有脚本需测试后方可使用!!!
    #---------------------------------------
    
    if [ "$1" ] && [ "$2" ]; then
    
      #获取当前时间
      curtime=`date +"%Y/%m/%d %H:%M:%S"`
    
      #所在目录
      dir='/web/oa/'
    
      #连接数据库
      db_con="/usr/local/mysql/bin/mysql -uxxx -pxxx"
    
      #自动获取系统目录文件 仅可包含oa系统文件
      sysDir=`ls /web/oa`
    
      for db in ${sysDir}
          do
              ${db_con} -e "select count(*) from information_schema.columns where table_schema = '${db}' and table_name = '${1}' and column_name = '${2}';" >> /web/shell/check_mysql_field_exist.txt
              echo ${db} " done" >> /web/shell/check_mysql_field_exist.txt
          done
    else
        echo "Error: param is empty"
    fi

批量替换指定文件脚本

rewrite_file.sh

#!/bin/bash

#---------------------------------------
# 替换指定文件
# 注:参数1为新文件路径 参数2为原文件路径
# author: SenSen 1050575278
# date: 2021/10/10
# 注意:所有脚本需测试后方可使用!!!
#---------------------------------------

if [ "$1" ] && [ "$2" ]; then

  #获取当前时间
  curtime=`date +"%Y/%m/%d %H:%M:%S"`

  #所在目录
  dir='/web/oa/'

  #自动获取系统目录文件 仅可包含oa系统文件
  sysDir=`ls /web/oa`

  for f in ${sysDir}
    do
      cp -rf ${1} ${dir}${f}/${2}
      echo ${f} " done"
    done
else
    echo "Error: param is empty"
fi

thinkphp批量启动、停止命令行脚本

task.sh

#!/bin/bash

#---------------------------------------
# 批量启动、停止 task [考虑性能,此接口不再使用]
# author: SenSen 1050575278
# date: 2021/10/07
# 注意:所有脚本需测试后方可使用!!!
#---------------------------------------

#获取当前时间
curtime=`date +"%Y/%m/%d %H:%M:%S"`

#判断是否存在参数,不存在则取消
if [ "$1" == 'start' ] || [ "$1" == 'stop' ]; then
    #所在目录
    dir='/web/oa/'

    #自动获取系统目录文件 仅可包含oa系统文件
    sysDir=`ls /web/oa`

    #排除目录
    excluded=()

    for f in ${sysDir}
        do
            #排除指定目录
            if [[ ${excluded[@]/${f}/} != ${excluded[@]} ]]; then
                continue
            fi
            #进入目录
            cd ${dir}${f}
            #执行对应操作
            #/usr/bin/php think task $1
            sleep 1
            echo "${curtime} ${f} done"
        done

else
    echo "Error: param is empty"
fi

服务器配置概要

【安装宝塔】
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

【编译安装】lnmp(nginx1.18 mysql5.7 php7.4 phpmyadmin5.0)

- 阅读剩余部分 -

thinkphp6中where与whereOr同时使用

whereOr与where同时使用时,需使用闭包模式,避免sql语句错误。

$user = Db::name('user')->where('uuid', $where['uuid'])->find();
if($user['phone'] && $user['card_id']){
    $map1 = [['phone', '=', $user['phone']]];
    $map2 = [['card_id', '=', $user['card_id']]];
    $model = $model->where(function ($query) use ($map1, $map2) {
        $query->whereOr([$map1, $map2]);
    });
}elseif($user['card_id']){
    $model = $model->where('card_id', $user['card_id']);
}elseif($user['phone']){
    $model = $model->where('phone', $user['phone']);
}else{
    $model = $model->where('id', 0);
}