搜索

php一路走来

Aug 08, 2016 am 09:20 AM
linuxmemcachenbspphpsession

        从2012年就已经接触php了,一直到现在做了已经两三年了,也走过无数的弯路,也通宵熬过无数次夜,看过各种各样的PHP书籍,博客等,做一下总结,全当是对自己过去这一段时间的总结。

        php是一个弱类型的语言,所谓若类型的语言并不是之没有类型区分,而是说没有明显的类型定义,php的变量不需要提前定义,只需要一个$符号就可以了,如:$a/$b/$c。 php变量在底层的实现是用c中的共同体(Union)实现的,只是php变量会在操作的时候自动进行类型转换,其次,php的变量采用的是“引用复制”和“写时复制”的机制。

        php学到后期会有种不知道该怎么学习的状态,感觉功能的实现都可以实现,没有什么东西可以学习,确实php到后期本身没有什么好学的,此时可以尝试学习一些设计模式,去看一些开源的代码,去尝试着封装一下MVC,尝试着用原生态的PHP语言去实现一些框架中的封装。看完这些之后,可以尝试的去看一下php的源码,也许你此时会发现php的源码还是很难理解的,没关系,一开始都是这样,你可以在这之前去重新学习一下c语言和c++,此时也许你会发现从c到c++其实是一个封装的过程,你也会发现,php源码中用到了大量的结构体(struct),define,typedef,以及大量的一重二重三重指针,你会发现php不是没有什么可以学习,是需要更深层次的挖掘,好了接下来的日子就有事情可以干了,看看PHP的源码,尝试着实现一下php的扩展,放到自己的环境中调用一下。

        php后期并不是没有什么可以学习的,而是它本身语言就比较简单,如果只是学习应用层面的东西那就真的没有东西可以学习了。好了大致看完源码之后你会发现php之后会被解析成opcode然后才会被执行,你会知道apc的用法,memcache以及radius的/概念,你会对php有一层更加深入的了解,那下面咱们转向优化方面。

        php是一门web开发语言,所以涉及到web就要涉及到优化,怎么说优化呢?网站的瓶颈一般存在与两个地方一个是数据库的瓶颈,一个是php语言的瓶颈,数据库方面:表结构的优化,mysql引擎的选择,索引的添加,纵向分表,横向分表,主从数据库读写分类,集群。php方面咱们可以从优化view层中的css 和 js说起,对css和js进行压缩合并,图片进行处理,图标进行合并等操作。controller层对sql语句进行优化,减少关联查询和子查询的使用,可以把sql语句拆开执行,然后在拼合数据。采用页面静态化处理部分不经常变动的页面,采用memcache/apc/radius作为数据库缓存,缓解数据库压力,采用opcode功能减少php的解析(php5.5之后自带opcode舍去了apc,也可以通过apc实现),选择速度更快的nginx代替apache服务,对服务器做集群等等。当然php本身写法上也有优化技巧比如单引号与双引号的使用,include 和 requice的使用等等,不再叙述。至此你需要学习的东西还有很多。

        当感觉学习一门弱类型语言没有什么提高的时候,也许你可以再去学习一下强类型语言,比如说学习java做jsp的时候你会发现jsp中并没有你所理所当然的session,你可以选择用map、hashmap等已有的数据结构来封装session,你可能已经习惯了框架给你提供的功能,但是在这里,你确实需要自己去封装一个数据库的链接读取并把数据返回到一个map中的方法以方便你的开发。

         当你感觉学习php没有什么提高的时候,也许你应该去学学linux,其实不需要去看多少书,换上一个linux系统,尝试着去用它。你会发现linux其实要比windows更好用,你可以去搭配一套lnmp/lamp,尝试去写一点shell代码,去自动备份你的数据库,甚至去论循你的php以实现某种功能,你也可以很方便的配置php的xdebug去尝试用断点调试php程序,也可以很方便的去写一些php的扩展,配置memcache等等等等,你可以尝试使用vim去写一些东西,尝试去使用gcc编译c尝试去使用gdb调试程序,尝试去用命令行去干更多的事情,你会发现php其实和linux才是绝配。

        这个时候你已经可以熟练的去使用linux了,为什么不尝试自己去实现一个小小的框架,去分析一下常用框架中的技巧,php的面向对象,php的魔法函数,php如何实现多态,以及php在apache中是怎么运行的,nginx为什么比apache性能高,如何在多台服务器下去共享session,如何利用curl去调用一些接口实现开发过程中的某些场合的使用,如何去使用serialize /unserialize去实现一些数据的序列化存储反序列话使用,如何去抓取一些网站的内容,以及如何去改进一些使用习惯。总之,你需要做的还很多,php并不是没有什么可以学的,而是不应该一直停留在代码阶段,应该去学习更深入的东西,要相信当你感觉没有什么东西可以学习的时候有很大一部分是因为你的知识范围还太小,认知层面还太浅。

        编程不容易,且行且珍惜,找工作也不容易,所以不管任何时候还是要努力提高自己。

版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了php一路走来,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
超越炒作:评估当今PHP的角色超越炒作:评估当今PHP的角色Apr 12, 2025 am 12:17 AM

PHP在现代编程中仍然是一个强大且广泛使用的工具,尤其在web开发领域。1)PHP易用且与数据库集成无缝,是许多开发者的首选。2)它支持动态内容生成和面向对象编程,适合快速创建和维护网站。3)PHP的性能可以通过缓存和优化数据库查询来提升,其广泛的社区和丰富生态系统使其在当今技术栈中仍具重要地位。

PHP中的弱参考是什么?什么时候有用?PHP中的弱参考是什么?什么时候有用?Apr 12, 2025 am 12:13 AM

在PHP中,弱引用是通过WeakReference类实现的,不会阻止垃圾回收器回收对象。弱引用适用于缓存系统和事件监听器等场景,需注意其不能保证对象存活,且垃圾回收可能延迟。

解释PHP中的__ Invoke Magic方法。解释PHP中的__ Invoke Magic方法。Apr 12, 2025 am 12:07 AM

\_\_invoke方法允许对象像函数一样被调用。1.定义\_\_invoke方法使对象可被调用。2.使用$obj(...)语法时,PHP会执行\_\_invoke方法。3.适用于日志记录和计算器等场景,提高代码灵活性和可读性。

解释PHP 8.1中的纤维以进行并发。解释PHP 8.1中的纤维以进行并发。Apr 12, 2025 am 12:05 AM

Fibers在PHP8.1中引入,提升了并发处理能力。1)Fibers是一种轻量级的并发模型,类似于协程。2)它们允许开发者手动控制任务的执行流,适合处理I/O密集型任务。3)使用Fibers可以编写更高效、响应性更强的代码。

PHP社区:资源,支持和发展PHP社区:资源,支持和发展Apr 12, 2025 am 12:04 AM

PHP社区提供了丰富的资源和支持,帮助开发者成长。1)资源包括官方文档、教程、博客和开源项目如Laravel和Symfony。2)支持可以通过StackOverflow、Reddit和Slack频道获得。3)开发动态可以通过关注RFC了解。4)融入社区可以通过积极参与、贡献代码和学习分享来实现。

PHP与Python:了解差异PHP与Python:了解差异Apr 11, 2025 am 12:15 AM

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

php:死亡还是简单地适应?php:死亡还是简单地适应?Apr 11, 2025 am 12:13 AM

PHP不是在消亡,而是在不断适应和进化。1)PHP从1994年起经历多次版本迭代,适应新技术趋势。2)目前广泛应用于电子商务、内容管理系统等领域。3)PHP8引入JIT编译器等功能,提升性能和现代化。4)使用OPcache和遵循PSR-12标准可优化性能和代码质量。

PHP的未来:改编和创新PHP的未来:改编和创新Apr 11, 2025 am 12:01 AM

PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境