话不多说上代码

function radius_img($imgpath, $radius = 0){
    $index = strpos($imgpath,"?");
    if($index !== false){
        $imgpath = substr($imgpath,0,$index);
    }
    $ext = pathinfo($imgpath);
    $src_img = null;
    switch ($ext['extension']){
        case 'jpg':
        case 'jpeg':
            $src_img = imagecreatefromjpeg($imgpath);
            break;
        case 'png':
            $src_img = imagecreatefrompng($imgpath);
            break;
        case 'gif':
            $src_img = imagecreatefromgif($imgpath);
            break;
    }
    $wh = getimagesize($imgpath);
    $w = $wh[0];
    $h = $wh[1];
    $radius = $radius == 0 ? (min($w, $h) / 2) : $radius;
    $img = imagecreatetruecolor($w, $h);
    //这一句一定要有
    imagesavealpha($img, true);
    //拾取一个完全透明的颜色,最后一个参数127为全透明
    $bg = imagecolorallocatealpha($img, 255, 255, 255, 0);
    imagefill($img, 0, 0, $bg);
    $r = $radius; //圆 角半径
    for ($x = 0; $x < $w; $x++){
        for ($y = 0; $y < $h; $y++){
            $rgbColor = imagecolorat($src_img, $x, $y);
            if (($x >= $radius && $x <= ($w - $radius)) || ($y >= $radius && $y <= ($h - $radius))){
                //不在四角的范围内,直接画
                imagesetpixel($img, $x, $y, $rgbColor);
            }else{
                //在四角的范围内选择画
                //上左
                $y_x = $r; //圆心X坐标
                $y_y = $r; //圆心Y坐标
                if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))){
                    imagesetpixel($img, $x, $y, $rgbColor);
                }
                //上右
                $y_x = $w - $r; //圆心X坐标
                $y_y = $r; //圆心Y坐标
                if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))){
                    imagesetpixel($img, $x, $y, $rgbColor);
                }
                //下左
                $y_x = $r; //圆心X坐标
                $y_y = $h - $r; //圆心Y坐标
                if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))){
                    imagesetpixel($img, $x, $y, $rgbColor);
                }
                //下右
                $y_x = $w - $r; //圆心X坐标
                $y_y = $h - $r; //圆心Y坐标
                if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))){
                    imagesetpixel($img, $x, $y, $rgbColor);
                }
            }
        }
    }
    return $img;
}

客户误删数据库。删了10来条用户。想办法恢复下。
从数据库删掉的,只能从数据库这边找了。通过活动记录可以关联到删除用户的ID。有了一丝希望,但不多。
没有其他数据做支撑,空有id,啥也不是!

网上查了查,mysql 有binlog, 若开启可记录文件操作,insert,update操作。

-- 查询binlog开启状态
show variables like 'log_%';

使用mysqlbinlog,可以使用 find / -name "mysqlbinlog" 查找这家伙在哪里。
直接全部导出太大 可筛选范围 并将 筛选内容 导出到 /www/0907.sql 这个文件中

/www/server/mysql/bin/mysqlbinlog --start-datetime="2023-09-07 08:00:00" --stop-datetime="2023-09-07 13:59:59" /www/server/data/mysql-bin.000023 -r  /www/0907.sql

然后 就可以搜索到 写入记录 ,再根据之前缺少的ID恢复数据即可。

扩展:
mysqlbinlog /data/mysql_data/bin.000008 --database EpointFrame --base64-output=decode-rows -vv --skip-gtids=true |grep -C 1 -i "delete from Audit_Orga_Specialtype" > /opt/sql.log

/data/mysql_data/bin.000008:需要解析的 binlog 日志。

database:只列出该数据库下的行数据,但无法过滤 Rows_query_event。

base64-output=decode-rows -vv:显示具体 SQL 语句。

skip-gtids=true:忽略 GTID 显示。

grep -C 1 -i "delete from dataex_trigger_record":通过管道命令筛选出所需 SQL 及执行时间。

/opt/sql.log:将结果导入到日志文件,方便查看。
参考:
技术分享 | MySQL binlog 日志解析
mysql查看binlog日志

装一网站,需要配置php-fpm,我经常开发,却不常运维,很是头大。
当前环境centos7+php7.4+nginx。
安装zip依赖后,需要重启下。

重启方法

master进程可以理解以下信号:

  • INT, TERM 立刻终止
  • QUIT 平滑终止
  • USR1 重新打开日志文件
  • USR2 平滑重载所有worker进程并重新载入配置和二进制模块

方法一

  1. 先查看php-fpm的master进程id:
    ps aux | grep php-fpm | grep master | grep -v grep
  2. 再重启php-fpm:
    kill -USR2 master进程id

方法二

上面master进程可以看到,matster使用的是/usr/local/php/etc/php-fpm.conf(可能有的是/etc/php5/fpm/php-fpm.conf)这个配置文件,cat /usr/local/php/etc/php-fpm.conf看到:

[global]
; Pid file
; Note: the default prefix is /usr/local/php/var
; Default Value: none
;pid = run/php-fpm.pid

pid文件路径应该位于/usr/local/php/var/run/php-fpm.pid,由于注释掉,所以没有生成,我们把注释去除,再kill -USR2 master进程id重启php-fpm,便会生成pid文件,下次就可以使用以下命令重启,关闭php-fpm了:

添加到系统服务

创建文件 php-fpm.service

[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
[Service]
Type=simple
PIDFILE=/var/run/php-fpm.pid
ExecStartPre=/usr/bin/rm -f $PIDFILE
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
ExecRestart=/bin/kill -USR2 $PIDFILE
ExecStop=/bin/kill -SIGINT $PIDFILE
[Install]
WantedBy=multi-user.target

复制到这个位置 cp php-fpm.service /etc/systemd/system/php-fpm.service

开机启动

systemctl enable php-fpm.service

Linux改动php.ini后如何重启php-fpm
Centos7下的php-fpm系统服务脚本

近日一服务器磁盘占满 , 清理日志。发现 /var/log/journal 目录占用4.1G空间,但又是系统目录,不可妄删。
此目录为 journalctl 工具所创建的。

以下为 journalctl 命令自动维护文件大小的命令

  • journalctl --disk-usage 查看磁盘占用
  • journalctl --vacuum-time=1w 保留一周日志
  • journalctl --vacuum-size=500M 只保留500MB的日志

还可以删除目录下文件,然后重启journalctl
重启方法为 systemctl restart systemd-journald.service

Linux 系统 /var/log/journal/ 垃圾日志清理
Linux系统查看日志命令journalctl的一些用法