最近开始玩各种上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文档库都没找到,待更新。
官方项目地址: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] =>
)
yum install epel-release -y
yum install doxygen -y
git clone https://github.com/BYVoid/OpenCC.git
cd OpenCC
make
sudo make install
git clone https://github.com/nauxliu/opencc4php
cd opencc4php
phpize
./configure
make && sudo make install
echo extension=opencc.so >> /opt/php7/etc/php.d/1-opencc.ini
composer载入php-opencc
composer require overtrue/php-opencc -vvv
最近安装php发现编译失败, 搜索一圈后发现软件包仓库改crb去了,稍微改一下脚本判断就解决了.
sed -i 's/enabled=0/enabled=1/g' /etc/yum.repos.d/*-{crb,plus}.repo
如果不想改repo配置,则安装的时候启用一下crb源.
dnf -y --enablerepo=crb install libzip-devel oniguruma-devel rrdtool-devel
https://mirror.stream.centos.org/9-stream/CRB/x86_64/os/Packages/
另外libc-client-devel的包暂时也没找到, 用remi的源安装uw-imap-devel替代解决了.
dnf install -y http://rpms.remirepo.net/enterprise/remi-release-9.rpm
dnf -y --enablerepo=remi install uw-imap-devel
git clone https://github.com/php/pecl-mail-mailparse.git mailparse
cd mailparse
phpize
./configure
sed -i 's/#if\s!HAVE_MBSTRING/#ifndef MBFL_MBFILTER_H/' ./mailparse.c
make
make install
echo "extension=mailparse.so" | sudo tee $(php-config --ini-dir)/mailparse.ini
开源项目地址 https://github.com/php-mime-mail-parser/php-mime-mail-parser
演示地址:https://files.photo.gallery/demo/?samples
下载链接:https://cdn.jsdelivr.net/npm/files.photo.gallery/index.php
设置说明:https://forum.photo.gallery/viewtopic.php?f=66&t=9964
开心补丁:https://cdn.jsdelivr.net/gh/yyingc/[email protected]/files.js
php组建需求: fileinfo exif imagemagick
配置根目录、密码访问和排除不需要显示的目录:
// 根目录配置
'root' => '根目录路径', // root path relative to script.
'start_path' => false, // start path relative to script. If empty, root is start path
// 登录账号密码配置
'username' => 'zhujizixun',
'password' => '12345678', // Add password directly or use https://tinyfilemanager.github.io/docs/pwd.html to encrypt the password (encrypted password is more secure, as it prevents your password from being exposed directly in a file).
// 排除文件或者目录
'files_exclude' => '/.(html|xml)$/i', // '/.(pdf|jpe?g)$/i'
'dirs_exclude' => '//js|/_files(/|$)/i', //'//Convert|/football|/node_modules(/|$)/i',
'allow_symlinks' => true, // allow symlinks