本期thinkinlamp应该算是第三期了吧?每一期都有热点,这一期也不例外
只是这一期都集中在百度和微博的爆点上了,都在讲自己怎么优化怎么优化,怎么提高性能,他们也都用图例说明了自己的架构原来是多么的复杂,这些离我们都太远了,其实大家也都明白,PHP能做的事情很多,不仅仅局限于前台,但受限于语言的特性,对于多线程之类的不适合用它来做。也正因此,他们几个都在尝试用其他方式 来避开这个问题,让刀用在刀刃上。
其中有一点就是扩展的问题,百度的人在认为扩展能不用就不用。而鸟哥则认为合理的利用扩展可以有效的提高 性能
然后就是另外三个让我有兴趣的话题了:hm的全文检索/老高的开发规范/梁枫的PHP在web之外
hm的全文检索我是用过了,性能上还是不错,只是当时我的需求是任意字符都必须要能够出搜索结果,但是基于分词的话,就没有办法这么准确。所以,有时候就很纠结。。
老高的几个规范其实在开发中也已经遇到,但有时候真的是为了赶时间就忽略 了这些,不过,在review的时候,偶尔会对这些问题进行修复,但不是每次都保证一定能发现问题,如果到后期遇到了,恐怕就真的很难再改了
梁枫的在WEB之外,是真的让我耳目一新, 无论是直接读ttyACMD之类的文件来使得用PHP与其他设备交互,在linux中,所有的一些都是文件,所以什么都能操作,这点就比windows方便很多。梁枫演示的,用PHP在屏幕画图,视频播放器等功能,真的让我感觉PHP有很多功能没有开发出来。不要忽略了PHP在其他方面的作用。事实上,我就经常用PHP来做运维工具,毕竟用PHP写脚本,对我来说,比shell/bash之类的快很多,而且功能也更强劲
------
顺便,中午的时候,居然有演出,四位朋友的友情演出,才让我突然想起,原来今天是家驹的忌日。从第一次听他的歌到现在居然都快20年了,家驹走好
------
今天的分享中让我记忆犹新的就是几个:1、规范一定要能落地;2、尽量用技术来支撑规范;3、开发的时候就最好把安全都先考虑好;4、PHP能做很多事,就看你敢不敢想
性能有时候虽然重要,但我还是觉得,如果能够加速迭待,那才是更好的。准备开始尝试下一个项目中使用yaf了。理由真的有几点,一是纯C框架,效率有上升,2是有PHP的复刻版,即使真的装不了扩展,也能用这个复刻版
YAR,YAC都还可以考虑,先忍着点。。。。yar因为RPC的不是每个项目里都能够用得上,YAC的话,如果不是因为他无锁,都不太想用,但是又太新了,也不是每台机器上都能使用,所以就先不作考虑了,不过可以尝试在自己的项目里小小的应用一下。。。
鸟哥的扩展太多了。。。小心的用,哈
在之前也写过一些关于apns的事情,不过都没有深究。都是抄抄改改,写写弄弄,近日 在与人讨论时,人说纯中文可以发76个汉字左右。当时我就想了,这不应该啊。apns总长度不能超过256字节,76个汉字。json_encode一下。一个汉字8个字节,早就超了不知道多少了。还要组成payload。。难道不超吗?
然后看了一下别人的函数,原来是用了一个自定义的json_encode。看了他的自定义json_encode之后,突然想起,风雪之隅在他的博客上提到过,5.4的json_encode加了一些参数(参考: 让Json更懂中文(JSON_UNESCAPED_UNICODE)),于是看了一下。json_encode($str,JSON_UNESCAPED_UNICODE)。计算下来的长度与那个自定义的json_encode一样了。
自此,记录下来。推送的时候也可以多推几个汉字了。(仅限php5.4,之前的版本还是网上找自定义的json_encode函数吧,关键字:中文自定义 php json_encode ,或者直接看:http://yige.org/p/458)
早期关于APNS的文章 :
看到这个标题,你是不是会觉得很无聊?事实上,我是想表达另外的意思。从php5.2开始,很多操作都是支持streamwrapper的功能的,所以当有一个需求:从网上下载一张图片,存到本地,并使用正确的后缀名,就需要用到getimagesize了。
PHP代码
- $data = file_get_contents($url);
- file_put_contents('xxx',$data);
- $imageinfo = getimagesize(xxx);
- $extension = func($imageinfo);
- rename('xxx','xxx.???');
以前的逻辑可以是这样。但现在可以简化一下
PHP代码
- $data = file_get_contents($url);
- $imageinfo = getimagesize('data:image/;base64,'.base64_encode($data));
- $extension = func($imageinfo);
- file_put_contents('xxx.'.$extension , $data);
偷了个懒,代码扔在github上了。
用法也很简单:
$fetion = new PHPFetion('用户名','密码'); $fetion->send('对方手机','信息'); 会自动识别自己还是对方。(非好友不能发哦)
也实现了$fetion->multiSend,但我偷了个懒,直接循环用send发送了。
事实上,可以在刚登录的时候,利用group先将好友列表拉回来,然后就方便了。但觉得这样就复杂了。何必呢。。一般在用飞信的时候,也很少会用到群发功能吧。所以,我还是循环的send。黑黑
代码地址:https://github.com/neatstudio/yiiextension
欢迎围观