分类目录归档:未分类

漫谈获取客户端真实IP

声明:本文是以Nginx和PHP的交互过程来说明具体问题。

以下分两个部分来探讨

客户端参数是如何传递到服务器应用程序中的

一个完整简易的Http请求Request/Response过程:
服务器接收到客户端Http请求,选择CGI script来处理请求, 通过meta-variable来传递请求数据, 将客户端请求转为一个CGI请求,执行script, 把CGI响应转为客户端响应。
继续阅读

Mac Safari调试工具介绍

浏览器调试工具当然首推chrome, 但是有些偶尔使用一下Safari(比如IPv6热点下Chrome访问不了站点),发现Safari调试页面请求真实“难用“,每次发现都不知道怎么用,捣鼓半天,特意记录下。

说明:
MacOS Version: 10.12.5
Safari Version: 10.1.1
继续阅读

由php curl函数请求异常引发的思考

也算是百年一遇的一个现象,调用一个接口服务(假如:url = ‘http://i.niliu.me/xx/xx/xx’), 以下两种方式都正常返回:

0、通过浏览器地址栏发起请求。【不区分浏览器】
1、通过linux下curl命令发送请求。

curl 'http://i.niliu.me/xx/xx/xx'

但是,通过php curl函数请求返回500错误信息。(无论是单个curl请求,还是多个请求curl multi)
继续阅读

记一次对MC取数据时间不敏感Debug过程

故障描述:客户端线上页面偶现白页

Debug 过程流
0、第一反应是部分服务器挂了,很快排除。
1、CURL请求页面数据API,一直有数据。跟端上沟通,端上会有超时出现白页的情况。查接口果然超时。
2、如何处理?第一反应是如何做性能优化,而不是为什么会超时。当然,性能优化前提也是要分析超时原因,即性能瓶颈。【事后来看第一时间问为什么会超时的思维更高效】
继续阅读

phpredis zRangeByScore取全量数据用法

我们首先看下redis-cli下ZRANGEBYSCORE的用法[这里redis命令都用大写]:

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

返回有序集key中score在min和max直接的成员(默认闭区间[min, max],可用符号(min, (max来指定为开区间),按score递增排序。可选参数WITHSCORES决定是否要返回score。可选参数LIMIT指定返回偏移量后的数量,不指定则返回全量。
继续阅读

PHP或运算的一个浅显Bug

前几天赶项目,遍历一组数据,类型是8或9的单独处理,当时是这样写的:

// 片段一
$type = '8';
if ($type != 8 || $type != 9) {
        echo 'do job_b' , PHP_EOL;
} else {
        echo 'do job_a' , PHP_EOL;
}

以上,期望输出”do job_a”, 但是输出的却是”do job_b”, 当时觉得很费解,无赖时间比较紧就换了一个写法:
继续阅读