Joyber 发布的文章

现在被恶意请求了,把恶意请求单独打到一个日志文件,然后提取客户端IP,去重,然后封掉这些IP

创建文件

vim  filterIp.sh

文件内容

#! /bin/bash
sed 's/src:\([0-9\.]\+\).*/\1/g' $1 | sort -n | uniq

用这个脚本处理日志文件, 提取到客户端IP,这些IP是排序,去重了的

chmod a+x filterIp.sh
./filterIp.sh xxx.log

我的 xxx.log 的日志格式是这样的,如果保存日志不一样,则需要改一下 filterIp.sh 中的sed处理规则

src:60.173.147.155 cdn:58.215.115.71 - [16/Jun/2021:10:02:01 +0800] "GET /xx.html?xx3 HTTP/1.1" 403 564 "xx" "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1)"

镜像配置:

Go 版本要求
建议您使用 Go 1.13 及以上版本, 可以在这里下载最新的 Go 稳定版本。

配置 Goproxy 环境变量Bash (Linux or macOS)

export GOPROXY=https://goproxy.io,direct

PowerShell (Windows)

$env:GOPROXY = "https://goproxy.io,direct"

使配置长久生效 (推荐)
上面的配置步骤只会当次终端内生效,如何长久生效呢,这样就不用每次都去配置环境变量了。

Mac/Linux

# 设置你的 bash 环境变量
echo "export GOPROXY=https://goproxy.io,direct" >> ~/.profile && source ~/.profile

如果你的终端是 zsh,使用以下命令

echo "export GOPROXY=https://goproxy.io,direct" >> ~/.zshrc && source ~/.zshrc

Windows

  1. 右键 我的电脑 -> 属性 -> 高级系统设置 -> 环境变量
  2. 在 “[你的用户名]的用户变量” 中点击 ”新建“ 按钮
  3. 在 “变量名” 输入框并新增 “GOPROXY”
  4. 在对应的 “变量值” 输入框中新增 “https://goproxy.io,direct”
  5. 最后点击 “确定” 按钮保存设置

参考官方网站:https://goproxy.io/zh/docs/getting-started.html

今天遇到一个神奇的现象

项目使用yii1.1版本,遇到莫名的异常结束,200状态,内容为空

报表页面,ajax请求数据,时而正常返回数据,时而异常

无任何报错信息,php-fpm也无报错,PHP 7.0版本,PHP报错级别已设置为E_ALL,各种方法都尝试了,找不到原因

本地同请求测试一切正常,生产环境异常

一天时间已经过去,无解

第2天,决定在代码中打断点试的,一步一步排查

最终确定原因:

在报表数据查询后处理过程中,使用了4层循环,加上数据查了4个月的日报表,数据量并不高

循环中,把PHP设置的内存用尽,导致异常结束

配置为128M,代码中没有修改内存大小

解决方法:在代码前使用 ini_set('memory_limit', '256M'); 设置内存解决;

难排查的原因在于,找不到任何报错信息。。。。。

对了,报错信息是用Yii::log()方法输出到文件中,tail -f 查看文件的内容来找,可能是这个原因,由于PHP内存已经用尽,后面代码执行不了,所以没有输出内容到文件?(还有个疑点,就是控制器都没执行?这不应该啊)

记录一下

你可以尝试在参数中加上container属性,比如

{
...
container: '#j-datetimepicker-wrap'
...
}

这个属性设置为你的控件放到哪个容器对象中里面。

这个容器(j-datetimepicker-wrap) 请加上 position: relative; 的样式,这是为了计算控件需要的偏移量,就是坐标位置。

源代码有这么一行

this.container = options.container || 'body';

如果你没有设置container这个属性,那么默认你的日历控件是在body里面

如果你绑定了弹出层div,那么日历控件就和弹出层是一体的了