无名晓's Space活出花样,记录精彩

Time
Comments评论

最近写项目的时候会发现一个很奇怪的问题, 明明启动了Session,并且PHP设置的 Cookie_sessionid 也没有到期, 但是过了一定的时间, 之前设置的Session数据却不翼而飞, 造成错误。于是我搜索了一番发现, 只需要修改 php.ini 中的一个关键设置即可。下面是我在项目中实施的热修复:

<?php
// Your codes;
if(session_status() !== PHP_SESSION_ACTIVE) { // 如果session没有启动;
    ini_set('session.gc_maxlifetime', '10800'); // 10800秒, 也就是 60 * 3 * 60 (3小时);
    session_start();
}
?>

上面的 session.gc_maxlifetime 就是修改Session的 最大生命时间, 到期后将会被PHP的GC机制自动回收。
PHP的配置文件默认设置的过期时间为 1440 秒, 也就是 24分钟
注意: 修改Session配置文件的时候必须要 在Session启动前 修改, 否则会造成错误异常抛出!

Time
Comments评论

好久没发新文章啦。今天打算看看 Nginxaccess.log 都有哪些小可爱,结果发现里面乱的有点难受。然后我就找到了这个好玩意:log_format

根据官网文档介绍,使用 log_format 可以自定义日志记录的格式。 官网文档戳这里
下面整理了一些常用的变量定义:

$remote_addr 客户端的远程地址
$remote_user   客户端的远程用户名 (大部分情况下好像抓不到这个值)
$time_local 访问的时间与时区
$request HTTP请求头部
$status HTTP状态码, 例如:200/301/404
$body_bytes_sent 服务器发送给客户端的响应body字节数
$http_referer HTTP访问来源 (如果是直接访问网站的话这个值为空, 如果是从A站到B站的话, 这个值为A站的URL)
$http_user_agent 客户端的UA (用户浏览器信息)
$http_x_forwarded_for 客户端的代理地址 (如果代理服务器开启了禁止原始IP记录的话, 这里将没有值)

Time
TypeHTML
Comments评论

我是一个前端小白,今天写CSS的时候突然意识到原来还有这类区别:
.example .subone;
.example.subone;
.example > .subone
这三类是有区别的. 其实不难推出:

  • 第一种情况下,只有在第一层div拥有.example元素,并且在他的子集div中含有任意的.subone元素,就会匹配。
  • 第二种情况下,当一个div中同时含有.example和.subone元素时,就会匹配。
  • 第三种情况下,当第一层div拥有.example元素,并且距离他的相邻子集div(第二层)含有.subone元素,就会匹配。

搞懂了!

Time
Comments评论

今天又在瞎折腾,然后想到了这个很久没有使用过的指令。想着想着就觉得把它稍微介绍下。

1. 按文件名查找
find path expression | path=需要查找的路径; expression=查找的文件-/夹名称
例如:
find / -name 'owoblog*' # 该指令将会在根目录查找所有匹配开头是 owoblog 字样的文件-/夹
find . -name 'owoblog*' # 该指令指在当前目录查找所有匹配开头是 owoblog 字样的文件-/夹
find /home -name 'owoblog*' # 该指令将在 /home 文件夹中查找


以下段落转载自 这里
2.按照文件特征查找
(1)find / -amin -10    # 查找在系统中最后10分钟访问的文件(access time)
(2)find / -atime -2   # 查找在系统中最后48小时访问的文件
(3)find / -empty    # 查找在系统中为空的文件或者文件夹
(4)find / -group cat   # 查找在系统中属于 group为cat的文件
(5)find / -mmin -5    # 查找在系统中最后5分钟里修改过的文件(modify time)
(6)find / -mtime -1    # 查找在系统中最后24小时里修改过的文件
(7)find / -user fred   # 查找在系统中属于fred这个用户的文件
(8)find / -size +10000c # 查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
(9)find / -size -1000k # 查找出小于1000KB的文件

以上用法为常用写法,更多方法可以访问上方的转载链接.

Time
Comments评论

最近因为需要比较两个数组内的元素,但恰好这两个数组内的元素都是未知的,也就导致了一个问题,无法使用array_diff比较他们的差异,例如 Array(1) ([0] => string(1) "k") 和 Array(1) ("aaa" => int(0)) 没办法进行比较。所以我就想到了利用array_search的方式自行写一个函数。然后蜜汁的问题来了, 现有以下代码,在调试后却会得到:

<?php
$array = ["a" => "a"];
var_dump(isset($array[true]));  // print bool(false);
var_dump(isset($array[false])); // print bool(true);
var_dump(isset($array["a"]));   // print bool(true);
?>

我整个人都懵了,这个结果完全不是我想要的好伐。为什么会突然想起这个问题,因为在使用array_search()这个方法的时候,若存在这个键名,则会返回这个键名,不存在则会返回false。于是乎,又因为以上的测试代码,导致我差点没发现这个bug。所以有的时候不能为了节省代码的行数而节省啊!该分开写的时候还是得分开写~