phpcon 北京

这篇日志发布时间已经超过一年,许多内容可能已经失效,请读者酌情参考。

昨天开始的phpcon北京,到今天就已经彻底结束了。两天时间内听到了很多很赞的分享,整理以做记录。

参加phpcon主要有两个目的,一是开眼界开脑洞,看看大牛们都在做什么;二是围观大牛姿态。对了,昨天最后一个议题抽奖环节,我一不小心抽中了当日大奖——一台锤子手机,还是白色的!感谢老高,感谢韩老师红手!

专题不少,我也不排着列了,只写下印象比较深的几位。其他的参看官网:http://www.phpconchina.com/

0x01 新浪微博的MAPI

由新浪微博客户端接口负责人胡波分享的《手机微博V5项目经验分享》。手机微博、触屏版微博以及它们的各个版本都在使用这套api,为了与主站(webio)区分而起名MAPI。这个项目目前还在使用PHP5.3.x,说是计划换到php7,谁让php7性能高呢!

一个小细节,MAPI使用multi_curl做并发的http api请求。我一直不太信任http api(延迟/可靠性等方面),不过想了想如果是内网/专网通信倒也没啥问题。我跳到Python其中一个原因就是不想用flower的http api,不过看起来可以一试。

项目还使用了很多扩展,比如gettext,php-jsond等。我也一直不太喜欢pecl的扩展,大概是因为主要都是C写的我不了解细节不敢用或是担心环境配置起来太麻烦。最近一个项目使用了celery,但celery-php扩展我都没敢用,也是这个原因后来用了Python重写。相对应的Python倒是很放心的pip install了很多库,大概是因为这些库都是Python写的吧。应该改变这些思维,多测试多使用。

0x02 PHP安全编程

来自知道创宇404实验室的陈同学的分享,黑哥没来也是比较遗憾。其实槽点比较多,不过考虑到是在开发的会议上讲安全,本来就不能太深入。开发同学的安全基础看起来普遍较差,思维完全不在一个层面上,提问的问题也很蛋疼,辛苦这个哥们了。。。

0x03 PHP的异步并行编程

来自虎牙游戏的韩天峰老师的分享,脑洞大开(再次感谢韩老师红手)。

韩老师的扩展Swoole(官网),PHP语言的高性能网络通信框架,提供了PHP语言的异步多线程服务器。

我跳到Python的另一个原因就是因为PHP的异步执行问题,如今看起来可以跳回来了:)

PHP一个非常大的问题就是性能问题。PHP写的代码每次执行都会编译一次,执行完毕就释放内存。用PHP实现的开发框架,其实很大一部分性能消耗都在框架本身上。比如你有一个1000行的配置文件,一个大数组,每次运行加载,然后运行完毕释放,这是一种资源浪费。鸟哥的Yaf框架,使用C编写,启动后驻留内存,省去编译的过程,性能当然很高。而韩老师的思路很独特:假如PHP的生命周期长一点,能处理的范围大一点,比如PHP自己管理服务器的运行状态,那么这些频繁加载/释放的浪费就可以省下来呢?

于是Swoole诞生了,而且还是用C写的。不过也有个类似的纯PHP版本,workerman,依赖一些pecl扩展比如libevent。用PHP去实现一个Web Server甚至TCP Server!真是脑洞大开!跟node.js类似的回调机制实现异步,韩老师说目标是物联网哈哈。

不过问题也有,比如一些安全方面的问题,由于定制server不通用,log是否完整(流量审计),目前已有的安全防护工具还适用吗,workerman这种纯PHP实现是否存在性能和安全上的风险?这个看起来超有趣,回头一定要好好看看。

0x04 PHP7 is coming!

鸟哥的两个PHP议题,一个是PHP7的新特性,另一个是PHP7在性能优化上的技术细节。

鸟哥作为「亚一程」,号召力妥妥的,一大早就有不少粉丝排着队求合影。鸟哥的演讲非常赞,气场很足又没有什么压迫感,听着很舒服,气质上特别像我大学那会的技术总监(沈总,还都是西安娃)。

PHP7的新特性也不少,比如AST抽象语法树,感觉PHP白盒审计的春天要来了~再比如代码的静态类型提示,这个我非常喜欢,现在的做法是在使用@param@return之类的注释让IDE识别并自动提示,PHP7即将原生支持,并且支持参数的类型定义。以前版本的参数类型定义只局限于一些特殊的类型,但是对int、string等基础类型没有支持,这次PHP7重新实现了int、string等,附带的效应就是可以用作参数类型提示了,另一个效应就是不能再自己定义String、int之类的类型了。至于格式特别像AS,function xx(string $a):int{return 1;},这样的后置返回类型,以前写过Flex这种语法看起来也不是特别违和。

新特性很多,也都很好很强大。据说将会在6月11号发布alpha版本,正式版会在今年11月12日发布。期待ing。

还有一个细节,就是'0x0c'==12这种东西,在PHP5.x是true,因为0x0c被当作16进制解析了,然后转换成10进制比较,而在PHP7中就会是false。这里有个疑问,不知道is_numeric函数是否受到影响?貌似是80vul的一个paper提到了这个细节上的安全问题,一会求证下,现场讲的时候想起这事QA环节又给忘记了。。。

关于PHP7在性能优化上的技术细节,全是C的内容,然而我的C已经还给课本了。几个月前拒了一次机会,后来听到他说除了PHP他们也用C做一些事情,听到这我就有些后悔了,我是不是错过了一个Web选手转型bin选手的机会?催眠指数10颗星,我得重新查看我的技能树了。

0x05 程序员的职业规划课

Easy大神职业规划课,讲稿放出来了,大家可以去围观:

http://vdisk.weibo.com/s/x5GuxeDaSq/1433678725

求职是个技术活。对自己的人生规划和职业规划都必须有清晰的认识。

0x06 其他感受

近距离围观各种大牛们,感受他们的气场与姿态,为自己树立了一些新的目标,虽然我不是专职开发,但我有一颗开发的心(逃),鸟哥分享了自己的一些经历,让我感觉到“真正的敌人只有自己”,我需要重新点下技能树了。

国内这种面向一线PHP开发人员的conference确实很少,这届办的很赞,场地的LED显示屏效果碉堡,娱乐环节做的也很好,感谢老高在会议主办上的努力,感谢各位讲师的分享,确实受益良多,当然,对我来说收益明显的就是那个白锤。j_0059.gif

留言交流

长春
长春 2015-08-05 14:37 回复
老大威武
点击换图