(面试问题)具备必定的系统分析能力,系统调优能力,对于系统稳定性保障有本身的理解

PHP 应用的高性优化,不少时候咱们把业务代码作一些优化,反而是简单又高效的。前端

  • 业务的异步解耦,好比,咱们把耗时的多个分表数据的排行榜,经过其余服务作分布统计,而后再综合,最终输出到redis list 中,那咱们前端 PHP 在调用数据的时候,就不用实时计算了。redis

  • 缓存的多级处理,业务复杂之后,常常看到一份相同的数据读取 N 次,尽管是有缓存服务器,可是读取的时候也会有网络 I/O 的开销,考虑到咱们 PHP 通常使用场景下都是单进程,使用频率高的,则应该优先使用进程内缓存。而后再本地缓存,而后再到网络缓存。算法

  • 单例的运用,不要小看了对象的构造,不少时候咱们在同一进程中,会发现同时构造了 N 多相同的对象。每一次的初始化都是一块内存的开辟和 CPU 的消耗。数据库

高性能,一个就是运行环境的优化,另外一个是代码自己的优化。缓存

运行环境的优化,覆盖面也很广,包括系统层面的内核,文件系统类型,数据库及缓存服务自己的性能优化,再到PHP解释器的性能优化等等,PHP不一样运行方式的差别(好比Apache模块,还有PHP-FPM等等)。安全

代码优化方面,我以为可维护性和代码可读性的重要性大于高性能。代码优化能够借助profiling工具来分析,找到真实访问条件下,处理瓶颈在哪里,再去作针对性的优化。固然本身在初次设计和实现的时候,就须要作必定的总体考虑,例如怎么设计可以减小数据库的查询次数,如何减小重复的操做,了解同一问题的多种解决办法哪种效率更高(包括算法上的差别,以及PHP的不一样方式致使的差别等等),如何设计缓存来提升缓存命中率等等。有一些设计须要在体验和效率上作个权衡。性能优化

保证稳定性,一样也分运行环境和代码自己。前者要对线上服务作完整的监控,这个有不少完善和强大的开源工具可使用,保障基础环境是稳定可控的,而且可以及时发现问题,进行修复。至于代码,除了尽可能作完整的测试,开发的时候就须要考虑可能的问题。另外针对PHP,开发环境能够把error_reporting彻底打开。还有须要知道常见的安全问题(XSS,SQL注入,CSRF,越权等),毕竟安全问题也是稳定的一部分。服务器

相关文章
相关标签/搜索