好久好久不写东西了。好像学生都是最怕写文档的,有的时候连邮件都是写得比较粗糙。写文档也算是一个能力吧。

前些日子在一个群里说这个周末有有一个很牛的技术大会,有空的都要去参与一下。然后我一看确实挺牛的——PHPCon China 2015@Beijing,一看有我熟知的技术大牛是大会的讲师,然后就通过万能的朋友圈求得一张票。既然参加了PHPCon就写的东西总结一下吧,毕竟PHCon在北京也是第一次举办(之前都是在上海办的,今年分了北京站上海站)。

首先说一下,这个PHPCon真是一个“程序员思维的大会”,为什么这么说呢,第一基本都是程序员在讲计算机语言相关的,第二,也是最主要的,就是这个会的时间把控很准很到位。一切都是按照时间流程表走下来的,以前参加什么发布会没一个不推迟时间。也许这就是程序员工程师做事的严谨性。

今天听得最多的一个字就是“坑”……

胡波——《**YafYar**扩展在手机微博的应用》

打头炮上场的是新浪微博的@胡波_讲的是《Yaf、Yar扩展在手机微博的应用》分享了这里面的一些经验和一些“坑”,“坑”就是胡波老师首先提出的,因为有“坑”,胡波老师好像一直站在了一个位置没有移动过,更没有走向舞台的中央。可能原因是他认为中央有一个“坑”。【这只是玩笑】

首先介绍了微博客户端与底层平台之间的MAPI接口,可以说是微博最大的流量入口,每天近百亿的点击量,QPS峰值远远超过了50W,然而这里面遇到一个“坑”——面向用户需求REST面向接口解耦合。还有就是历史版本的兼容性,目前的版本是PHP5.4,之前是PHP5.3,为什么没有升级到PHP5.5等高版本?升级就会遇到一些“坑”从5.3到5.4遇到的“坑”相对要少一点。听胡老师说今年等PHP 7发布了会升级到PHP 7。接下来讲了框架的使用……【上图吧】

陈峰卫——《**PHP**安全编程》

接下来的第二场,是陈峰卫老师讲了《PHP安全编程》,结合前段时间发生的一连串的网络安全事件,可知网络安全是不可忽视的,但是有的时候这个可能跟业务需求冲突,必须二选一。不管是某某挖掘机干的,不管是什么手残的程序员干的,安全编程是至关重要的,个人觉得这个需要积累,需要测试。

下午第一场是韩天峰老师讲的《PHP的异步并行编程》。等放出视频PPT后可以好好琢磨两下膜拜一下大拿。

李博——《用**PHP开发微信APP**》

第二场是@这是李博【侯斯特CTO】老师讲的《用PHP开发微信APP》侯斯特是一家微信公众号开发的第三方平台。微信公众号开发还是挺广泛的,主要原因是一个微信公众号可以算是一个轻应用。首先有一个得说明的是不能说“微信就是手机网页浏览器”,根据李博老师说的那样“聊天的App开放了平台就相当于一个‘操作系统’”,所以说微信公众号开发不是一个简单的事。微信公众号开发对认证的账号和没有认证的账号提供的接口不一样,订阅号跟服务号公众号提供的接口也不一样,这样看的话就是四种组合,所以要做一个第三方的平台,是给好多用户使用,微信开发并没有想象中那么简单。

微信公众号开发者中心服务器配置一般为:URL+Token

  • 开发者无法确定公众号是否正确配置了URL和Token
  • 无法验证用户提供的AppID和AppSecret
  • 因为需要账号提供AppSecret,无法保证安全
  • 同时根据微信方面确认,这个方式只为开发者进行程序调试,不会提供更多的支持。
    微信服务请求不能超过5秒,这是什么回事呢?我们平时聊微信时,如果发送一条消息或者语音,如果超过5秒没有发送出去,就会出现一个红色的感叹号。同样在微信公众号中开发:消息回复,对于每一个POST请求,开发者在响应包中返回特定xml结构,对该消息进行响应(现支持回复文本、图文、语音、视频、音乐)。 微信服务器在5秒内收不到响应会断掉连接。

保证不超过**5**秒

  • 采用Gearman做消息服务,分发任务【了解一下Gearman】
  • 只保证回复消息的最小开销
  • 对微信消息的接收域名做特殊的超时处理,并定义超时时的错误信息(空串等)
    保证不超过**5秒——PHP +Nginx**

  • 配置fastcgi_connect_timeout,fastcgi_send_timeout,,fastcgi_read_timeout

  • Error_page 504/504.htm;
  • htm这个文件保持空白(回复空串给微信,这样就不会出现官方提示“公众号暂时无法 提供服务”)【注意,这个只是表面现象,其实并没有保证不超时5秒,这样做只是为了不让微信服务器给提示警报】
  • PHP脚本会执行完毕,数据不会丢失。可以用超时队列+客服消息处理
    微信公众号开发中插件相关:

传统思路:

  • 仿照Worldpress做插件系统,一个插件一个文件,然后include进来
  • 你要知道include进来后是顺序执行的
  • 插件需要用系统的语言来编写,并且要绕过重名和函数……
  • 插件需要部署在一起
  • 一旦有fatal error,你懂得……
    需要改进的是:【新的尝试】

  • 做一个插件就相当于做一个服务,RPC

  • 可顺序执行可并发执行
  • 插件的编写语言不受限制,都能调用
  • 不怕报错
  • 插件与系统可以跨公网通讯【SAE+开放平台】开发者可以贡献自己的力量
    ……【还有微信同步的问题,授权等问题】

最后总结一下这些年踩过坑:

  • 群发后微信会推送针对每一个OPENID的发送情况,挤爆了服务器。因为一个账号可能会有几十万的粉丝,一下子收到这么多消息,妥妥地挤爆服务器。
  • 一定要采用公众号AppID作为唯一的公众号标识,否则会重复授权。
  • 微信最近开了图片消息中的图片防盗链,需要特别处理。【我怎么说我转载微信的文章到自己的博客,里面还有图片,结果第二天在博客里看到图片不显示却有一串文字“此图片来自公众号,未经允许不可使用”】
  • 一定要对每一个微信公众号区分域名,例如$APPID$.mp.weixinhost.com【这个很重要,如果不区分,一旦被举报了,微信可能封杀的是weixinhost.com这个域名,因为这个域名上不止有一个微信公众号,那样其他公众号也会跟着受影响】
    差不多就是这些了。

最后是关于创业投融资的演讲。