@IT·互联网程序员我爱编程

PHP开发者 & PHPCon 2016之前大会PPT总

2017-07-23  本文已影响457人  liufxlucky365

写在最前

Devlink2016开发者大会没有直接参加,十分遗憾,只能通过会后的PPT来学习学习。最后还附加了一些其他比较有影响力的大会PPT总结

PHP游戏开发(王晶,半桶水)

桶哥的分享很受启发,原来php还可以在游戏领域开发,而且试用领域还挺广,并不只是只能做后台和官网等边缘功能,游戏领域包括

但游戏开发跟web开发还是有区别的

php-game-dev-01.png

缓存

游戏开发对数据缓存要求很高,桶哥说缓存可以分为三级

一些坑

数据特点

游戏数据的特点

5ms级别的业务请求

游戏里有大量此种类型的接口要求,桶哥这里给出了以下建议:
不论业务的复杂度如何,一个api请求,只读一次数据,只写一次数据
这样做的好处是速度快、不产生脏数据、业务逻辑清晰

外挂处理

游戏领域的一个常见问题就是作弊问题,比如外挂,有以下几种预防措施

配置化管理

这点非常受启发,通过hook机制,在运营同学更新配置文件(如excel)后自动解析加载新配置文件,能够大大提高迭代速度

PHP做大数据量实时分析(吕毅)

此PPT最大的感觉是漂亮,PPT能力果然很重要哦 _,感受一下

php-data-01.png

这个结构也很好,即表明摘要,也说明各部分的占比

php-data-02.png

PHP开发企业应用常见问题(王春生)

讲师总结的企业应用常见的几个问题感觉不错

如何保护自己代码?

保护代码的最好方式是开源? 这句话不懂,我猜讲师的意思是最好的方式是不要依赖代码的保密性,依赖服务、数据、内容可能更有优势
或者通过加密(ioncube、zend)
或者通过法律途径,这个比较困难

如何解决应用部署问题?

不是指业务代码部署,而是指用户拿到代码后如何部署?
原则是要简单,尽可能的简单
可以通过镜像、deb、rpm、docker等,尽量减少第三方依赖

如何实现计划任务?

看到这个主题终于理解了php版本task的意义
因为不可能再让用户去配置crontab,所以在项目要内置自己的计划任务管理

如何防止安全问题?

PHP+Swoole在车轮互联的应用与实践(韩天峰)

峰哥主要介绍了swoole是如何在车轮网造轮子的,实现了一套相对轻量可控的服务治理系统

服务治理

我目前理解的服务治理是指公司内部众多团队都会产出各种各样的通用服务,如何高效的组织管理这些服务是一个很大的挑战。同时如果能够有一套优秀的解决方案,则会鼓励更多的使用服务化的架构(微服务),更加清晰易于维护

那么流行的服务治理有以下几种思路

最后是基于swoole的解决方案,优点为

缺点的话,依赖第三方扩展swoole,配套开源方案不够强大

swoole造轮子

第二部分为峰哥基于swoole服务治理开发的一些列轮子
先看一下服务治理全景

php-swoole-server.png

配置管理,swoole搞了一套可以在各个平台同步json配置文件的方案
服务发现,swoole搞了一套服务的注册、上线、下线管理方案(zookeeper本质也是这?
监控报警 & 调用统计,swoole实现了一套机器信息监控、统计监控报警的方案

淘宝社区双十一性能优化实践(信海龙)

本篇主要讲的是淘宝社区在高并发到来之前如何进行优化的

找出性能瓶颈

还在使用microtime(true)打点?请使用xhprof

php-xhprof.png

另外还有一个技巧,能够在每个php文件都优雅统一插入统计文件
php auto_prepend_file="client.php"
nginx fastcgi_param PHP_VALUE "auto_prepend_file=client.php"
apache php_value auto_prepend_file="client.php"

数据库分库分表

首先明白为何分库分表。因为

那么常用的分库手段包含?

分库分表的难点一般有查询sql复杂、主从延迟。一般需要使用中间件进行封装与数据同步系统

降级系统

降级系统的意义是勉强的活着,优雅的死去

php-server-level-down.png

这个架构看的不是很懂

程序猿都该知道的MySQL秘籍(叶金荣)

老叶一如既往的干货满满,开篇即是高潮,逐条手撕myisam

myisam的观点

老叶的观点

innodb正确玩法

这里老叶总结的很全,但我只记录一下我还模糊的

联合索引怎么用?

现有联合索引k1(c1, c2, c3),下面哪个查询不能完整使用整个联合索引?

where c1=? and c2 in (?, ?) and c3=?
where c3=? and c1=? and c2 in (?, ?)where c1=? and c2=? order by c3
where c1=? and c2 in (?, ?) order by c3

多表join时,order by的若不是驱动列,则无法使用索引

没踩过坑的都不是正常人

query cache(qc)

绝大多数场景鸡肋,最好关闭(query_cache_size=0 & query_cache_type=0)。因为qc锁是全局锁,每次更新qc的内存块锁代价高,很容易出现waiting from query cache lock状态

ibdata1文件暴增

文件内存了什么

暴增原因一般为大量的未提交事务,或者文件io性能差,还有32bit系统下的bug
解决的话升级5.6,提高io性能,事务及时提交,默认打开自动事务

表数据从十万到千万

大量日志如何处理

LAMP这些年开发的一些感悟(老百度)

PPT里多是经验之谈,有一些还是很中肯的,印象深的如下

不要太迷信于一些流言,xx性能不好、xx架构不行,更多时候是因为理解的不够,该做的优化没有做

另一个是关于规范的制定

  1. 能够对开发人员透明的规范最优
  2. 其次为包含了自动检查的规范
  3. 再次为人肉检查代码的规范
  4. 下下策为口头约束

安全编码实战经验(黄敏)

应对cc攻击(ddos的一种)

sql注入

老生常谈,但有几个仍然需要注意的地方

函数安全

线上环境尽量禁用以下函数

eval
passthru
exec
system
chroot
scandir
chgrp
chown
shell_exec
proc_open
proc_get_status
ini_alter
ini_alter
ini_restore
dl
pfsockopen
openlog
syslog
readlink
symlink
popepassthru
stream_socket_server

文件

上传文件的格式限制要使用白名单而不是黑名单
尽量使用开源库,直接从http请求中处理
因为php原生后缀检查和web服务器的一些配置都存在已知漏洞

include文件时一定要控制可访问目录的权限以及 ../../../ 攻击

xss

xss攻击成功的话基本可以获取平台的部分甚至全部权限

不要试图使用正则去过滤script onload onerror等,xss有一万种方法绕过
服务端采用严格html语法解析,对tagname attrname attrvalue css严格检查才能杜绝
推荐开源库XML_HTMLSax3

社会工程学

最难防的攻击来自代码之外
加好友套话、欺骗工作人员、qq空间、朋友圈搜集信息
防不胜防

一个简单例子

用户基本信息:张小军 ZhangXiaoJun 19901210 18612345678
那么他的密码可能是

zxj1990
zxj19901210
zxj1210
Zxj1990
zhangxiaojun1990
zhangxiaojun1210
zhang1990
zhang18612345678
12345678zhang
zxj18612345678
zxj@1990
zxj@1234
zxj@123456
zxj12345678
12345678zxj

微博升级PHP7经验分享(胡波)

微博升级php7的最大经验就是完善的单元测试,这是他们最大的后盾

在升级过程中,依次保证

  1. 函数功能兼容性测试
  2. 扩展配置兼容性测试
  3. 公共库单元测试
  4. 业务逻辑测试
  5. 线上小流量测试

编写可测试的PHP代码(罗承成)

这位讲师的分享也很中肯,分享了什么是单元测试?什么是可测试的代码?如何写可测试的代码?

单元测试

单元测试又称模块测试,是对程序中最小单元模块进行功能测试,最小模块可以是一个函数、一个过程、一个类或者就是一个小程序。需要提一下的是,单元测试有一个隐喻是指被测试的单元要跟周围的环境尽量隔离,依赖倒置

可测试的代码

可测试的代码主要是指容易测试的,一般需要遵循以下原则

不可测试代码

Laravel Lego save you from CURD(张卫)

PPT风格很独特,幽默风趣

是最大的美德

同时还是个远程工作者(蛋壳公寓)

自己开发了一个库,能够方便的进行各种表单处理,挺实用方便的功能

上一篇 下一篇

猜你喜欢

热点阅读