Nginx+PHP 环境 499 错误码排查过程小记

前言 某公安项目过程中,在内网服务器部署 WNMP 环境,运行 Laravel 框架代码,后查看日志发现某一时刻突然所有请求 499,并持续一段时间,遂排查原因。 过程 0x01 经搜索得知: 哪些情况下会使 Nginx 返回 HTTP CODE 499? 即:「客户端主动关闭连接」 但某一时间段内全部请求均为返回 499,这显然不是所有客户端主动意识上的「关闭」,可能是因为客户端等待超时,自动关闭连接;加上 499 的时间段内包含部分 502,让我不得不怀疑:

February 2, 2018 · Wi1dcard

Why PHP?浅谈选择 PHP 作为后端主力开发语言的原因

在各类交流群,甚至多数老一辈程序员的眼里,认为 PHP 是「轻量的」、「不完善的」、「性能难以优化」的,而这么多年来一直坚挺的 Java 却成了开发「XX 系统」的后端首选语言。为此,本篇文章将尽量从非技术角度告诉大家:Why PHP? 现状 其实,从 Java 和 PHP 的历史不难看出。在 Java 开始盛行的年代,PHP 还是个“毛头小子”,只是个普普通通的脚本语言罢了,甚至连面向对象的基本概念——类,都没有支持。 鉴于 PHP 历代升级以来坚守的向下兼容性,至今还可以看到不少用「当年的」原生函数写出来的产品代码可以运行,透过命名规则我们也可以看出当年的 PHP,好像的确「不够完善」。

January 18, 2018 · Wi1dcard

macOS Finder 右键启动终端(Terminal)

Windows 系统可以使用修改注册表的方式实现右键在当前目录打开命令行,那么 macOS 该如何优雅地实现这一功能呢? 1. 按照如下路径找到设置: 系统与偏好设置 -> 键盘 -> 快捷键 -> 服务 -> 新建位于文件夹位置的终端窗口 / 标签页 2. 选中复选框,并在右侧设置快捷键。 这里我设置为:Command + -

November 17, 2017 · Wi1dcard

正则表达式课程大纲

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。—— 菜鸟教程 [*] Part 1 是什么? 用途?(搜索、替换、提取、验证、格式化、Rewrite 等) 怎么用? 常见正则引擎(PCRE / DEELX …)。 常见正则测试工具(Deelx Regex Match Tracer / Regex 101 / RegExr / Cyrilex / For PHPer: PHP Live Regex) 一个简单的例子(.

November 14, 2017 · Wi1dcard

Laravel 5.5 连接 MS SQL(SQL Server)数据库

因项目需要,要使用 Laravel 连接微软的 SQL Server,虽然这种组合显得非常奇葩,但经过测试还是可以成功实现的。 准备 首先,因为 Laravel 连接数据库默认是使用 PDO 扩展,而 PDO 连接 SQL Server 需要使用 pdo_dblib 扩展,所以首先第一步就是安装此扩展。 MAC 系统 直接使用 brew 命令安装即可。

November 2, 2017 · Wi1dcard

2017-10-27 腾讯云 CDN 故障记录

今日技术博客 POST 请求出现回源异常超时问题,经多方面排查,先后排除 PHP-FPM 慢执行、MySQL 慢查询、HTTPS 协议故障、本地网络故障等问题后发现直接访问源站正常,故怀疑 CDN 问题,随即提交工单并多次电联腾讯云催促,最终得到答复。 2017-10-27 15:00 故障发生,首先怀疑站点问题(读取请求正常,写入出错)。 2017-10-27 17:00 排查发现问题原因是腾讯云 CDN 回源故障,此时全站 GET 请求正常,POST 请求 HTTP 协议出现 CONNECTION RESET,HTTPS 返回 564(根据腾讯先前解释为回源超时),部分功能可能出现问题,提交工单等待腾讯修复。

October 27, 2017 · Wi1dcard

UCenter 1.6 Client Example 对 PHP7 兼容不良的排查与修复

没错又踩坑了。 因项目需要与 DZ 论坛实现 SSO 登录、账号同步等功能,经老司机波波推荐,直接使用 DZ 官方产品 UCenter 集成即可;于是陈晟&潘昭宇折腾了一天 UCenter,可还是遇到了过不去的“拦路虎”,于是接近下班之际,决定接手这个问题,不知不觉踏上了过节依旧加班的不归路。 UCenter UCenter 是原 DZ 团队(现已被腾讯收购)开发的一套统一认证系统(顾名思义:User Center),具体介绍参见:百度百科。这套产品已经非常有年头,以现在的眼光再来审视当时的架构确实存在不少问题,当然,这并不影响它具有历史价值。 先来说下 UCenter(下称UC)的大致架构吧,这是坑踩完之后总结出来的,为了不影响后续理解所以提前介绍。

October 27, 2017 · Wi1dcard

七牛文档填坑过程回顾

前言 此问题于2017年9月29日发现,至今(2017年10月19日)七牛文档仍未进行修复,故发此文,希望引起七牛官方重视。 前些日子项目需要,用上七牛对象存储,因之前都是用的传统架构: 客户端 -> 业务服务器 -> 七牛云 这次打算换一下,尝试更节省业务服务资源的直传对象存储方式: 客户端 -> 业务服务器拿 Token 客户端 -> 直传七牛云 七牛云 -> 回调业务服务器 HTTP API 接口 业务服务器收到上传通知, 验证来自七牛服务器 -> done.

October 19, 2017 · Wi1dcard

不要让脑袋里只剩 0 和 1 —— 避免思维固化

0x00 前言 曾经和一位不做技术、但与技术人员有合作的朋友聊天,他作为一名小领导,常和外包程序员打交道。我问他:你觉得做程序员最忌讳什么?他的回答是: 不要让脑袋里只剩下是与非、零和一。 作者:孙伟喆/2017-10-15 0x01 问题 那时候不懂这句话的我一心只顾钻研技术,于是追问:何出此言? 好多程序员做久了技术,习惯了面对代码,有时候可以明显感觉到他(们)缺乏了一些基本的感性思维。比方说,客户提出的需求,给出的答复总是:我只想要你明确的逻辑,不要跟我讲太多;又或是对于产品经理口中的某个效果,只有两条路:可以实现/实现不了;这让我难以接受。 是啊!世界上的事情怎么会有明确的分界线,人的思维是曲线的,最怕思维固化、一根筋。 0x02 分析 回到朋友提出的两个例子: 客户构想的需求 首先要明白,客户是普通人,不懂代码。 其次,客户提出的需求永远只是脑袋中的构想,如何把构想变成现实是你的事情,而不是客户需要思考的东西。 作为乙方,我们应该主动协助不懂代码的“小白”客户确定他想要的是什么,客户思维所及只能停留在与技术无关的层次上,那么接下来就需要你带领客户去分析,理清他的逻辑,同时也要思考在技术层面上如何实现。客户不了解在软件行业此类“构想”是如何实现,而我们不懂客户行业内的规则,在你主动带领客户分析需求、对需求“具体化”的时候,客户可以跟得上你的思维,及时修正你所说的是否有所偏差,甚至有可能打开了思路,主动说出某一模块的细节;而这时候,疯狂的记笔记就好了。 关于上面这条理论,有个很典型又类似的例子:

October 15, 2017 · Wi1dcard

macOS 清除 DNS 缓存命令

sudo killall -HUP mDNSResponder; sudo killall mDNSResponderHelper; sudo dscacheutil -flushcache

October 10, 2017 · Wi1dcard