screen常用命令参数备忘录

screen -S  name。 创建screen会话
screen -Ls 显示进程列表
screen -r sid 恢复某个进程
screen -X -S sid quit 终止某个进程
ctrl+a  d 离开当前进程
ctrl+a k 终止当前进程
screen -S 原始任务名 -X sessionname 修改后的任务名

thinkphp给控制台增加错误显示方法

路径vendor/topthink/framework/src/think/Console.php

 

在 public function run()的 $output->renderException($e);下面增加

 $output->error($e->getTraceAsString());

thinkphp在model里面切换分表

最近开始玩各种上TB的数据库,为了提升性能使用了分表
<?php
namespace app\model;
use think\Model;
class Blog extends Model
{
    protected $name = 'blog;
    protected $suffix = '0000';
    public static int $blog_id = 1;

    public static function shard(?int $id = null)
    {
        if (is_null($id)) {
            $id = self::$blog_id ;
        }
        $table = sprintf('%04d', intdiv($id, 10000));
        return self::suffix($table);
    }
}

读取数据

$blog = Blog::suffix('0001')->find(1);
$blog->name = 'test';
$blog->save();
print_r($blog);

 简化一下

Blog::$blog_id =100000;
Blog::shard()->find(1);

 

批量更新必须初始化才能使用

$data = new Blog;
$data->setSuffix('0002')->saveAll($updateList);

目前基本实现了在blog_0000 blog_0001 blog_0002 等各种分表里面读写数据

感觉thinkphp的model DB切换不是很灵活。

 

还有一些坑,翻烂了doc文档库都没找到,待更新。

php使用browscap判断浏览器客户端类型

官方项目地址:https://github.com/browscap/browscap

官方网站:https://browscap.org/

下载配置

wget "https://browscap.org/stream?q=PHP_BrowsCapINI' -O  /etc/php/browscap.ini

php.ini里面加入

browscap = /etc/php/browscap.ini

 

测试代码

        $browser = get_browser(null, true);
        print_r($browser);

测试结果

Array
(
    [browser_name_regex] => ~^mozilla/5\.0 \(.*linux.*android.4\.2.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*version/.*safari.*$~
    [browser_name_pattern] => Mozilla/5.0 (*Linux*Android?4.2*)*applewebkit*(*khtml*like*gecko*)*Version/*Safari*
    [parent] => Android Browser Generic
    [comment] => Android Browser Generic
    [browser] => Android
    [browser_maker] => Google Inc
    [platform] => Android
    [ismobiledevice] => 1
    [device_type] => Mobile Phone
    [device_pointing_method] => touchscreen
    [version] => 0.0
    [majorver] => 0
    [minorver] => 0
    [istablet] =>
    [crawler] =>
)