ApnsPHP完成推送后处理错误日志的正确方法

通过苹果的apns批量发送push消息,如果中间发生错误,应该需要捕获错误发生的对象,然后对那些发生错误的消息应该在后台进行标识,这是我们常见的处理逻辑,在ApnsPHP中很好的实现了这个逻辑,大致的代码如下: //假设前面已经有了下面一句 $message->setCustomIdentifier($id); //这里的id可以是你消息对于的数据库id … $push->send(); $push->disconnect(); //在发送完以后,可以进行下面的处理 $aErrorQueue = $push->getErrors(); $error_ids = array(); if (!empty($aErrorQueue)) { foreach ($aErrorQueue AS…

Continue Reading →

PHP 正则里面的两个重要技巧

正则用了好些年,有两个东西总结出来是在web开发中非常有用的,尤其在抓取、代码分析中经常用到。 1. .* 的贪吃性 我们用 /\*.*\*/ 去和字符串 /* first comment */ not comment /* second comment */ 匹配会失败,因为由于 .* 项目的贪吃性,会匹配成整个字符串,于是就会匹配失败,不过,如果在后面加一个问号数量符,则会停止贪吃性,而变成匹配尽可能少的数目,因此模式…

Continue Reading →

PHP正则匹配字符串中的标签

如果标签里面有中文、英文、数字等混排,则需要对汉字进行特殊处理,由于PCRE不支持\U \P \L之类的perl字符串处理转义,使用16进制或者Unicode进行处理,范例如下: [coolcode lang=”php”] $str = “之二宽阔的甘家口东#标签1#标签2 #标签3。#标签4,都发$1234 ¥xc,cvm , ¥12,dflksjf如何#标签5.x #tag6.cvxcv“”; preg_match_all(‘/#([a-zA-Z0-9\x7f-\xff]+)/’, $str, $mat); print_r($mat); preg_match(“/[\x{00a5}\x{ffe5}](\d+)/u”, $str, $mat);…

Continue Reading →

牛逼的GMP数学运算库

搞了一晚上,搞定了一个需要使用无限长度数字运算的产品功能开发,实现权限模块的处理,使用了gmp库来完成,效果一级棒,性能好不好还不知道,不过好在不是用在高性能要求的部分,好久木有今晚这样的为了搞定一个问题而钻研的劲头了。 顺便记录一下,如果要在BSD系统下的PHP中使用GMP库,不要安装最新的5.0.x版本的GMP库,4.2.4以下的版本最好,要不编译不过去的! 当前功能中实际使用到的最大数字是 18446744073709107172 ,二进制的结果是如此惊人的长度: 1111111111111111111111111111111111111111111110010011011111100100

Continue Reading →

解决技术小问题两三件

1. imageCreateFromBMP()方法的实现,重点是解决了对32位BMP图片格式的支持,现在很多的团购网站图片格式明显有问题,比如阿丫团,虽然都是.jpg的,其实图片文件mime类型是image/bmp的,确实很诡异 2. 困扰我很久的PPT编写和修改操作电脑反应非常慢的老问题,有时输入和删除个字电脑都很迟缓,今儿终于搞定了,不是电脑的问题,是Office的拼写检查导致的,现在可以用行云流水来形容了。 3. 另外搞定SVN的菜鸟问题一个,随着版本的增加,SVN服务器的反应是越来越慢,这是因为大量的版本历史文件存放在一个服务器目录下导致,这是默认的svnadmin create的存放模式,其实使用BDB模式存放就轻松搞定了,至于为什么默认不用此方式,我还没有去研究。

Continue Reading →

pecl 升级 sphinx 到新版

转载请注明出处:[Michael`s blog] http://www.toplee.com/blog/1385.html 用pecl upgrade sphinx 命令 可以方便的完成php中sphinx模块的升级,但是这并不表示能够sphinx模块会自动增加官方描述里面的那些新特性,比如1.0.1版本里面增加了 setSelect()方法,1.0.3增加了open(), close()等方法,这些方法并不是通过 pecl upgrade就能得到的,原因是sphinx模块编译的时候需要调用的库 libsphinxclient 还需要升级更新,它们默认存在于 /usr/local/lib目录下,包括 libsphinxclient.so, libsphinxclient.a 等文件,如何升级这些库呢? 记得一定要使用和您sphinx版本一致的libsphinxclient,否则容易出问题的,至少不能高于,我就遇到了类似如下的错误提示: client…

Continue Reading →

三道PHP面试题

有三道PHP的面试题,除了第三题需要一些经验和对HTTP协议理解外,前面两题其实很简单,但是很少遇到有人答正确的,大部分人我想都不是技术问题,而是思考是否严谨的问题。 [coolcode lang=php] 1. 下面语句输出什么?为什么? if ($a=$b) printf(“a==b”); else printf(“a!=b”); 2. $array[‘anykey’]和$array[anykey]有什么区别? 3. 写出使用telnet命令通过GET的方式访问http://www.toplee.com/index.php 得到页面返回的方法(不是用PHP实现,用dos或者unix命令行实现)。 [/coolcode]

Continue Reading →

验证码图片升级

想当初6.cn用一种开放的心态看待互联网,希望大家在一种友好、整洁的环境下共同发展,也希望让用户用起来更简单方便,一直不在任何地方提供“常见”的验证码,从去年开始,频繁开始受到各种恶意的攻击和注册,于是迫不得已加入第一个版本的验证码图片,那是一个简单、易辨认的图片 昨天6.cn的验证码被攻破,于是迫不得以,又对验证码进行了升级,这次仍然首先考虑的是用户体验,让用户更容易辨认,想想google、qq等网站的验证码,真的是大多数时间我都是靠猜的,别说机器辨认了,人都很难,这次6.cn的验证码图片加入了更多干扰元素,背景颜色和干扰的曲线都是随机产生的,但总的来说还是比较好辨认 (实在看不清,可以刷新页面更新) 互联网就是这样,没有什么干净的东西可以独善其身。

Continue Reading →