分类目录归档:PHP

Sina OAuth request_token 如何存储?

闲来无事,研究新浪的OAuth接口,来允许新浪用户登录,其过程呢是比较繁琐的。虽然有一些SDK可以下载,但是都不尽如人意。

资源如下:

  1. 新浪的OAuth API地址
  2. 新浪微博开放平台OAuth授权解决方案(含代码

纠结的问题在于此:

  1. 新浪使用的是OAuth 1.0 ,在用户授权验证前,需要先生成request_token
  2. request_token 应该如何存储?
  3. SDK中的建议是存储在SESSION中,但是如果我有多台前端机,DNS解析又是不靠谱的,那么我的多台机器如何同步SESSION?
  4. SESSION存储在数据库中可以避免此问题,可是问题是我的业务不需要用到数据库,为了存储临时性的一次SESSION而用库,太不划算。
  5. 存储到COOKIE中,多台前端机的问题就不用关心了,不过是否会有不安全因素呢?
  6. COOKIE中是否可以存储一个字符串,该串为MEMCACHE的KEY,由MEM来存储这个一次性的request_token 是否可行?
  7. 别人拿到COOKIE,COOKIE可以加一些验证,比如签名之类的东西,并不是随便改造就可以破坏我的程序的。

分析过程大致如上,具体如何实现还在纠结!

定位问题,要快、准、狠

今天小半天的时间都浪费在了一件事情上面,同事说报表有问题,于是就快速的把本月数据导出来,同时把上个月数据导出来。使用sort + join 这两个作弊器,基本上瞬间就定位了问题发生的原因。

知道原因,就开始看代码,处理相关逻辑的问题。因为对代码不熟,找问题点找了一会儿,发现代码没有什么问题。于是认为可能是crontab 有问题,决定重跑数据,这个时候灾难已经降临了。
继续阅读

PHP函数array_slice

一直想找这么一个函数,就是我取出数组的第一项。

之前傻了吧叽的使用foreach循环,然后记数。当为0的时候,将里面的值赋值给一个新的变量,最后返回这个变量。

今天闲着翻了一下手册,原来这东西是有现成的函数的:array_slice。
继续阅读

Linux Apache 配置文件更改创建文件用户名和用户组

学习TP,自己搭个应用,可是不允许改文件这就很郁闷了。看了一下,原来是程序自动生成的文件夹的用户名和用户组不对。我用默认用户去更改,当然没有权限。

于是,第一就想到肯定是APACHE配置里面,有指定默认的创建文件的用户名和用户组。搜了一下,果不其然:


#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User daemon
Group daemon

啥也别说了,改之重新生成,问题解决。

PHP simplexml_load_file与特殊字符

虽然本周末很凉快,不过过的实在有些忙碌。合作方的电话是一个接着一个,而且巧的很,查明原因后都是simplexml_load_file解析惹的祸。

所以这里对使用PHP来解析XML的同学提出两点注意:

  1. 表面看到的不一定是真的,file_get_contents或者curl远程抓一下,看其是否是一个有效的XML
  2. 特殊字符是会引起simplexml_load_file解析XML失败的,函数会报错

继续阅读

The Question Of Php System Commend Run Wget

好吧,我承认我是标题党。不过让我郁闷一上午的就是这个问题。使用PHP的system函数去调用Linux的Wget。

任务的需求是:将远程FTP文件抓取到本地,分析文件内容,存到数据库中。很简单的一个功能,我计划的步骤如下:

  1. 使用crontab调用PHP,将参数传给它
  2. PHP删除库中相关内容
  3. 去判断文件是否已经存在,如果存在PASS直接存库,否则执行system函数抓取文件
  4. 存库,记日志

步骤是很清晰的,不过问题很让人头疼。五月份跑的好好的程序,放在六月份不能执行了。FTP服务端没有改过配置,我的程序也没有动过。活见鬼。而且手动执行crontab的内容没有问题,放在crontab里就不行。
继续阅读

PHP 添加前导0,去掉前导0

字符串18位,后10位由用户id组成,但是目前用户id长度为8,需要在不足10位时前面加前导0,以便可以兼容日后用户id增加长度的情况。同时,也要在18位字符串中取出用户id,这里的用户id同样不能包括前导0。

真是一个让人头疼的东西,绕来绕去的,烦啊。不过,烦咱不也得做吗?呵呵~~
继续阅读

俺同样跟着搞了一个BBS动态签名图片

呼,说来惭愧,这个方法很早以前坦克就告诉过我了,可是我一直没玩过GD就把代码扔在一边了。直到今天看到司徒楠同学写了同样一篇文章,汗颜啊,厚着脸皮去要代码了。

于是,我也跟着搞了一个BBS动态签名图片,效果如下。版权嘛,就归“哥学社”所有了吧。呵。
继续阅读

第一次使用siege 第一次压力测试

Long long ago,头教过我怎么使用siege进行压力测试,不过那毕竟是很久很久之前的事了,尘封在记忆里早已经是灰尘密布。

今天翻了出来,自己要对自己的程序进行压力测试了。很是紧张,不知道要怎么做:并发数要设多少?要重复多长时间?CPU要压到什么样?QPS多少能让自己认为可以?很是迷惑。
继续阅读