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 修改后的任务名
none
screen -S name。 创建screen会话
screen -Ls 显示进程列表
screen -r sid 恢复某个进程
screen -X -S sid quit 终止某个进程
ctrl+a d 离开当前进程
ctrl+a k 终止当前进程
screen -S 原始任务名 -X sessionname 修改后的任务名
路径vendor/topthink/framework/src/think/Console.php
在 public function run()的 $output->renderException($e);下面增加
$output->error($e->getTraceAsString());
<?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文档库都没找到,待更新。
官方项目地址:https://github.com/browscap/browscap
官方网站:https://browscap.org/
wget "https://browscap.org/stream?q=PHP_BrowsCapINI' -O /etc/php/browscap.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] =>
)