马上注册,结交更多好友
您需要 登录 才可以下载或查看,没有账号?立即注册
x
之前从大神那里摘抄了一篇有关PHP面试技巧的问题,就有小朋友跑过来问,学习PHP需要哪些知识?
需要哪些知识,这可不是在消息框里三言两语说得清的,所以楼主特意到各大技术论坛及网站查询,其中有篇文章的内容得到各位技术同僚的认可,经作者同意,特分享给想要进入PHP领域的小朋友们,希望对你们的学习有帮助。
PHP学什么还是要先看未来的职业规划,给大家罗列三个大方向。
前端工程师方向:掌握web前端开发基础,移动APP开发、微信小程序、炫酷的网站开发、桌面应用开发等;
后端工程师方向:熟练掌握PHP后端开发技术,新浪一样的门户网站,淘宝这样的商城系统,斗鱼这种视频直播系统等等;
全栈工程师方向:掌握前端、后端、移动端、服务器端开发技术,熟悉互联网系统架构思想,小到网页设计、网站开发,大的话就是系统架构、性能调优;
一、前端
作用:但凡是一个网站都必须得让人能看得见,使用得起来。任何一个网站可以没有数据库,可以没有后端程序,但是必须得有前端页面,而这也是最早期的网站形态—一 一个只能展示文字和图片等信息的静态页面。掌握静态网页的制作技术是学习开发网站的先决条件。
学习知识点:这里面的学习包括 HTML,css,javascript,它们可以直接使用浏览器运行。
1.HTML负责网页的结构,用它来规定网页排版中哪部分是文字,哪部分可以放图片,音频文件,视频文件放在网页中什么位置显示等。
2.CSS可以把这些文字,图片,视频等信息拥有一定的合理好看的样式,可以定义文字的大小,颜色,图片的大小等等。
3.javascript可以让网页与人产生交互,就像你登录网站,点击登录按钮就会跳转,把鼠标放到菜单,菜单就会自动展示下拉,逛淘宝时,把鼠标放在产品图片上,图片就会放大等等。
二、后端
如果说HTML和css是看得见的部分,那么PHP就是看不见的部分。它负责在后面处理数据,然后返回给用户。当网站由开始的静态页面发展到现在有了后端程序,那么网站才有了业务逻辑。简单的说,就像一台计算器,你在前端输入数据,然后点击提交,PHP给你处理运算,然后返回到前端,这时你就看到了结果。需要特别说明的是PHP并不能直接在浏览器中运行,它需要Apache环境支持,放在Apache服务器里面,然后用浏览器用访问,这个需要大家在学习过程中配置一下,非常简单。
MySQL数据库当网站技术再往后发展时,人们需要网站处理存放更多的数据,来满足现实生活中的业务逻辑,这时候就需要数据库了。数据库是什么,按字面的意思,数据库说白就是存放数据的地方,它可以是一段文字,一张图片或者一个文件的URL地址等等。比如,当你想浏览一篇文章时,你点击文章标题,这个请求会跳转到PHP文件那里,PHP再从数据库取出你想看的那篇文章。PHP和数据库是密不可分的,PHP后来在网站开发中更多的任务就变成了操纵数据库了。数据库有很多种,准确的说咱的这个数据库是mysql数据库,只是因为php和mysql关系非常好,它们两个是完美的搭配。所以我们学习PHP开发学习的数据库就是MySQL数据库。
三、框架:框架说白了就是一个已经帮你完成了部分功能的程序部件结构。基本上到了公司动手做起真实的项目中都是使用框架来开发的,它可以使你的开发速度更快。为什么?就说网站开发吧,比如你要做网站中的验证码功能,你需要动手自己从0开始写,同样的,写一个文件上传程序,你需要动手从0开始写。这时你会问,我做什么不都是要动手写的吗?但是你忽略了一个问题,验证码,上传文件等等这些都是网站中几乎不可缺少的基本功能,每个网站都要用到,这时候你可以动手把这些常用的功能写好,然后封装起来,用的时候直接调用就行了,大大减少了代码的重复性,而这其实也就是框架了。
先别说自己做一个框架,因为完成一个好的框架不是一项简单轻松的工作,而且更需要高的知识技术水平。所以我们要学习使用别人做好的专业的框架,大都说中小型公司都是使用的别人的框架,PHP常见的有thinkphp, ci, yii,我个人推荐学thinkphp,这个是国人做的,轻量级,学起来更容易些,使用的公司也比较多。MySQL优化技术:当你学会了PHP,mysql的一些增删改查技术后,你可以尝试做一个简单的文章管理系统了,能发布,修改,和查看文章。但是,你试想一下,会不会遇到这样一个问题:当你查看一篇文章,MySQL需要从文章表中寻找你需要的那一篇取出来,此时你的文章已经很多了,比如有一百万篇,或者一千万篇时,mysql再从里面找一篇文章是不是越来越耗时了,平常文章量少的时候也许1秒钟就能打开一篇文章,此时可能需要十来秒,你愿意等吗?用户愿意等吗?就像新浪网,腾讯网这样的大型新闻网站,如果用户看一篇新闻需要等很长时间,那能行吗?所以我们要对mysql进行优化,让数据库尽量用更少的时间找到我们需要的东西。
在这里就不讨论具体的技术细节了,优化手段主要包括:
1,表的设计 (可以减少数据的冗余,节省磁盘的开销)
2,mysql的索引优化 (利用索引,可以加快查询数据的速度)
3,mysql的查询优化。 (加快查询的速度)
4,分区分表 (把一个大表分成几个小表,提高查询的速度)
页面静态化技术:当你学会了MySQL优化技术,切不要沾沾自喜,新的问题的依然很多。
可以再试想一下:一个人访问时,和大量的人访问时?当你一个人访问也许很快,但是大量的人访问,mysql要处理大量的请求,它是忙不过来的,mysql支持的请求数是有限的,这很容易理解吧。假如它一次只能处理100个请求,当超过100个人时,其他的用户是不是就要等着,这样速度又降下来了,如同上面举的新浪和腾讯网的例子,用户是等不了的。怎么办?一个很好的解决方案是采用静态化技术。
为什么要采用静态化,就是把数据库的数据生成一个文件,用户第一次访问时,mysql依然从数据库里面取,当第二次乃至以后更多次的访问时就直接访问这个静态文件了,不再劳烦数据库了,这样就减轻了服务器的压力了。
Linux我们的程序,数据库,整个网站终归都是放在linux系统的服务器上的,对于一般的程序员能做到基本的配置即可。基本命令、操作、启动、基本服务配置(包括rpm安装文件,各种服务配置等);
会写简单的shell脚本和awk/sed 脚本命令等一般公司有相应的运维人员管理。如果对这个有兴趣,后期可以继续深挖。非关系型数据库Redis/Memcached怎么又是数据库?,不是已经讲过了mysql了?是的,上面咱们说的mysql是关系型数据库,所以这两个叫做非关系型数据库。为什么需要它们?与mysql不同的是Redis和Memcached 的数据是放在内存中的,mysql是放在磁盘中的,而访问内存中的数据速度要远大于放在磁盘中,这就是它们的好处。
那为什么还要学习MySQL,干嘛不直接学习使用Redis和Memcached?
因为:MySQL更适合海量存储数据,Redis和Memcached是在内存中的,需要很大的内存才行,而且放在内存中的数据也容易丢失,如果机器故障重启内存就释放了。一般互联网公司大都采用MySQL + Redis,或者 MySQL +Memcached的方式进行架构;
Redis/Memcached都是基于内存的,所以它们的速度非常快,包括读和写都很快,一般用在一些高并发,大数据量访问的场景之下。
说到最后,总之,学习PHP并不难,难的是一个体系。以上总体比较基础,主要是针对一些刚入门学习的同学,在整体上给建立一个大体的知识体系。 |
|