分类目录归档:未分类

由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)
继续阅读

cron用法整理

看了很多资料把cron和crontab混为一谈,这里从澄清概念开始。

0、什么是cron。
在Linux环境下,周期性执行一些任务,用cron。cron由crond守护进程和一组crontab文件(配置文件)组成。

crond守护进程随系统启动,每分钟读取检查一次crontab文件,并通过fock子进程执行满足条件的指令。

# 查看cron手册
man cron
# 查看crond进程
ps -ef | grep 'crond' | grep -v 'grep'

继续阅读

记一次对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”, 当时觉得很费解,无赖时间比较紧就换了一个写法:
继续阅读

PHP7下除0返回NAN错误

线上的一个项目,过去一周数据展示异常。排查的过程中发现PHP7和PHP5的一个有趣的差异,特记录下来。

为了尽量把问题描述清楚,单独抽象了一个极简模型:电视节目排行榜,每个电视节目有4项数据(阅读数、互动数、搜索数、播放数),假如数据已经生成好,要求根据这4项数据制作一个Top100榜单,显示节目排名和分值(0-100之间)
继续阅读

C语言与MySQL交互

一直有一个遗憾,没有用C语言操作过数据库。

最近趁着对C语言的一点兴趣,重新熟悉起来,不是从基础语法开始,而是直接用操作数据库开始。

MySQL提供了很多编程语言与自身通信的API,其中就有C语言的API,利用这些API就能及其便利的操作MySQL。C API的数据类型及函数可以参考:这里
继续阅读

进程和线程一(什么是进程和线程)

首先,我们要问,什么是进程?(这里我们讨论的概念都是基于面向线程设计的操作系统)

什么是进程

在说明这个问题之前,我们先想象一个场景:周末在家开着电脑(MacBook),用浏览器(Chrome)访问网易云音乐,选了一首歌播放着。我们把唱歌这个任务交给了浏览器,浏览器正在做着这个任务。
继续阅读

一致哈希PHP实现及应用(一致哈希学习笔记二)

一致哈希算法介绍参考文章《一致哈希算法理解(一致哈希学习笔记一)》

回顾一致哈希算法步骤:
0、将每一个服务器节点按照ip或者server_name, 通过hash函数(eg: crc32)得到对应的一组hash整数值,这里称做hash_servers,并对得到的整数值按由小到大进行排序。
1、将key也通过上面同一个hash函数计算得到对应hash整数值, 这里称为hash_key。

2、遍历hash_servers,用hash_key与hash_servers中的数逐个比较,当hash_key最后小于hash_servers中的那个数存在时,这个数对应的节点就是这个key所存储的节点,否则存在第一个节点。

一致哈希算法PHP的一种实现
继续阅读