如何突破PHP程序员的技术瓶颈分析

首先要澄清PHP项目我指的,是指毕业后的工作,主要是用php开发的Web系统,没有使用它的语言工作。工作经验大概在3~4年。普通Web系统的开发(数百万访问、数千数据或业务逻辑不是很复杂)基本上是方便的,没有问题:

除了PHP不使用其他语言外,您还可以使用shell脚本。
PHP还没有很好地掌握(许多PHP手册还没有完成,除了库)
狭义的知识(面对需求,除了使用PHP和MySQL,而且不知道其他解决方案)
PHP代码基于这个过程,认为面向对象的实现太复杂了,无法理解。
这些和缺乏创意时遇到的高性能、高并发、海量数据、复杂的业务逻辑,我们不能分析问题的本质,和差的技术判断。我们可以很快找到解决问题的暂时方法,但是我们经常以一种连续的、暂时的方式崩溃,你是如何提高自己的呢你如何挑战一个更难的系统

更高的挑战在哪里结合我自己的经验,我提出了一些具体的挑战,让你有一个感性的认识。

高性能系统的挑战在哪里

如何选择Web服务器你想使用快速CGI模式吗
您要使用反向代理服务吗您选择完整的内存缓存还是硬盘缓存
你需要一个负载平衡吗它是基于应用层还是网络层如何保证高可靠性
PHP代码的性能如何,以及如何使用优化工具性能瓶颈在哪里你需要写C的扩展名吗
用户访问的特点是什么他们是读的更多还是更多你需要读书写字吗
如何存储数据写速度和读出速度是多少数据访问速度如何变化
如何使用缓存你如何看待这次失败数据的一致性是如何保证的
高度复杂的系统面临的挑战在哪里

你能识别出与之相对应的业务领域吗是一个或多个吗
业务是否可以合理地抽象,业务规则的变化可以以很小的代价实现
数据的一致性和安全性能得到保证吗
你是否有一个面向对象的分析和设计方法
当我列出你可以肯定的问题时,我认为你基本上是这个技术的设计者。你怎么回答不了,你需要按照以下的方向去加强它。

你怎么回答不了,你需要加强以下方向:

分析你使用的技术原理和背后的机制,它可以改进你的技术判断,提高你的技术选择的正确性。
学习大学的重要知识,操作系统原理,数据结构和算法,你知道你以前一直在学习考试,但是现在你需要自己学习,让自己知道。
再次学习C语言,虽然你在大学里已经学过了,这不仅是因为你可能需要编写PHP扩展,而且因为在C的应用中,关心性能、内存控制、可变生命周期、数据结构和算法环境。
学习面向对象的分析与设计是解决复杂问题的有效途径,学习抽象是解决复杂问题的唯一途径。
学这么多东西要花多长时间如果你努力工作,有一个更好的计划,估计需要1到2年的时间。

如何有效地学习是一个大问题。我有一些实践,但很分散,没有很好的总结。昨天晚上睡觉前,突然想到了RUP的核心,以架构为中心的、用例驱动、迭代开发、利用的思想,关于有效的学习方法,它可以表示为:原则、模式和机制,任务驱动,迭代学习。

一个小抽象,一个学习的例子。目的:学习如何提高加工性能。

迭代驱动的任务:通过IP定位该区域。

这是Web应用程序的一项常见任务,IP数据库记录约为1000万行。

第一个迭代:在不考虑性能的情况下实现函数(由PHP实现)。因为不可能直接通过键(IP)定位该区域,所以不可能直接将数据放在数据中或通过一个简单的关联数组的方法。

你是如何通过IP找到的两分钟查找是最快的。
如何排序当然可以使用库函数排序,但这是学习,所以让我们自己做。
学习目标:排序算法,搜索算法。

和一般的数据结构和算法的基础是比较差的,通常不具备这方面的工作,不学习,所以对这方面的知识缺乏。然而,编程解决,最终归结到数据结构和操作该数据结构的算法的问题。如果数据结构算法常在心,那么问题就可以清楚地认识到它的内部结构,和解决方案将成为。

第二次迭代:优化数据的装载和排序。如果你做第一步,基本上是不可用的,因为每次都需要装载和排序数据,因此需要花费太多的时间。

想在后面的问题很简单,这是一个更快的方法,把它放在共享内存(EA和其他加速器),因为后面有更多的网络操作。数据放入共享内存作为一个整体,或块。如何测试性能并分析瓶颈(Xdebug),通过这些问题的驱动下,你将学会。

学习目标:检测、定位和优化PHP性能的方法;PHP实现结构对性能的影响。

第三次迭代:写的PHP扩展,性能仍在继续,所以我们要进入C / C++的世界,但从现在开始,你将超过phper,服务器端的最通用的工程师。当然,这个挑战不是很大的学生谁没有做C / C++。我不能简单地学会如何学习C和C++,PHP程序员学习C++。

学习目标:从C / C++学习,编写PHP扩展

如何确定需要学习的机制和原则如何找到驾驶学习任务我不知道我需要学什么。我如何回答上面的两个问题

从这个技术的位置,找出需要学习的东西,也就是说,它是如何做到的,以及为什么它能做到这一点(模型或原理)。
这项技术最常见的应用列表,作为学习的任务,从简单到难到实践。
如果我需要学习Javascript,我对HTML、CSS有一点感性的认识。首先,我明白js是Web领域的一种动态语言,它主要解决网页的动态交互:

js如何与HTML(机制)交互
js和其他动态语言的动态特性有什么区别(语言模型)
如果你完全自学,找到需要学习的关键点(机制、模型、原理),学习任务就不那么容易了。如果你找一个有经验的人来指导你或学习团队,学习的速度将会大大提高。