仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2398|回复: 20
打印 上一主题 下一主题

[学习教程] PHP教程之PHP创造人谈MVC和网站设计架构 貌似他不...

[复制链接]
精灵巫婆 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-16 00:23:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
给你的建议是,有些最常用的语句是需要记住的 比如if for while这些、其他的一般语句你只要知道有这个函数或者有这个功能就可以了,当你用的时候你可以凭借记忆搜索就可以了。   Q:愈来愈多Web 2.0网站走向使用平台,你以为打造这类平台的关头为什么?

A:复杂来看,使用平台就是API,任何Ajax或 Web 2.0类型的网站,都是在使用平台上应用了API来发明出视觉介面的互动后果。例如Yahoo Mail,透过复杂的Request呼唤,来读取後续的函件。打造这类网站,若何筹划处理成绩的体例,会决意了网站将来的扩大性(Scalability),而非效能决意网站的开展。

Q:若何筹划网站架构,才会具有扩大性?

A:将一个网站使用,分红几十个自力小程式,前端透过 API供应办事,後端是使用程式引擎,如许做天然会有扩大性。由于使用的每个局部,都有分歧品级的利用体例,需求有分歧的扩大水平(scaling level),需求分歧的机制来处置。以开辟Yahoo Mail而言,是要开辟一个地址办事程式丶一个读佩服务丶一个送佩服务,而送信程式完整和读信程式有关。以Yahoo的范围而言,需求让这些任务完整分别,才有扩大性。

Q:这类筹划网站的体例,什麽是最主要的关头?

A:关头是你必需创立分别丶模组化的自力端点,而不是全体放在统一个大篮子里。大多半当今MVC架构(MVC framework)的开辟框架(Framework),利用所谓的前端掌握器(Front Control),每次阅读器提出Request恳求时,就会呼唤这个前端掌握器,再由前端掌握器来分辩,利用者想要履行哪一支程式。如许做,一点意义都没有。

在阅读器条理,程式完整能晓得利用者想要做什麽工作,例如利用者只是要读信,程式就不必再把需求送到伺服器,让伺服器判别利用者要读信仍是送信。将这类决议计划任务拉出阅读器,由伺服器处置,就会华侈大批伺服器资本,来处置那些对利用者没有实践功用的任务。扩大性来自架构,良多开辟框架,将一切工作绑在一同,限制了架构。选错开辟框架,你就没有扩大性。

Q:你是说MVC形式晦气於网站扩大性?

A:MVC形式对照合适用在网页掌握器(Page Control)的条理。根基上,每个网页掌握器都是自力模组,读信和查地址是分歧的网页掌握器,所以,读信程式就不会搅扰到查地址程式。所以,在每个端点利用MVC形式来打造小型的网页掌握器,是不会有成绩。然而,大多半采取MVC形式的框架,预设在网站中采取前端掌握器,而非用网页掌握器的体例,如许的MVC形式,只合适在小型或单一伺服器的网站。

Q:你会若何选择开辟框架呢?

A:一个框架都不要用。然而,我会从这些开辟框架中,找出我需求的功效,拿出谁人我需求的程式模组来用,或参考个中的设计设法,而不是套用全部框架。我所看到的大多半框架,都没有专注在打造无效能的扩大性和可模组性。

Q:岂非开辟者不需求框架或架构吗?

A:网站切实其实需求有架构,每个人都需求框架,框架是一种处理成绩的办法。然而你其实不需求通用型框架,用一个前端掌握器,来处理一切成绩,如许凡是没举措胜利。每个成绩都分歧,你需求引诱框架,利用准确的设计形式,直接处理真正要处置的成绩。只临盆一款汽车,怎麽能够知足全球人的需求!

用框架开辟雏形体系就好,但真实的产物就不要全体套用。从框架入手下手对照轻易,但你要拆开全体的框架,移除Runtime反省丶拿失落不需求的功效,只留下你会用到的程式模组。你不需求一个通用型框架,由于它没法供应将来的扩大性,但也不必重头写起,你需求的是介於二者之间。

Q:网站需求筹划到多久以後的扩大需求?

A:我老是仇恨要帮将来思索太多。当你没法展望将来,你就没法帮将来作决意。
网路变更太快,我凡是只筹划半年内的工作。如今决意半年以後的工作,能够会做失足误决议计划,反而让工作更糟。假如你没有处理当下的成绩,而是想像将来会产生的成绩,我以为不值得,我宁可处理面前看失掉的成绩,真正聚焦在当下需求的产物。

Q:那麽,有任何原则是架构人员可以遵守的吗?

A:最次要的准绳是,细心思索若何分派程式模组,尽量将程式拆解成更小的元件,调校出恰当的API,你应当筹划的是利用者端点的工作,例如阅读器恳求的类型是什麽?使用程式要若何回应?是不是可以切割?是不是可以把这些任务分派到完整分别的伺服器上履行?即便是在统一台伺服器上,你也能从利用者端点的角度来架构使用程式,有一天,当你的范围变大後,就能够很轻易到场第二台伺服器,只需在前端伺服器不贮存任何材料,就可以停止流量分管。普通开辟者最大的毛病是,让程式码之间的交互干系(interrelation)太深,每一个分歧的元件都需求和其他外元件沟通,如许做很难调校出很乾净的API。开辟者会没法抽离出效力慢的API放到帮助伺服器中,而让次要伺服器只履行需要API。

Q:切割办事丶拆解程式的难度是什麽?

A:必需在入手下手之前,就要十分懂得成绩。当你写完第一个版本的程式,才着手拆解成绩,那几近是不成能,很难事後处置。这切实其实很难,由于成绩会一向改动。然而,若你从复杂的架构入手下手,而且坚持这个精力来区隔程式模组。每次当网站产生变更时,成绩的变更也只会影响到一小局部,你就可以够十分清晰谁人中央,可以直接处理成绩。就仿佛乐高游戏一样,盖好每个小块积木,哪边还有缺乏,就只需求再补上一小块就好,不必对全体改动太多。

Q:除扩大性之外,若何进步网站效能呢?

A:要进步效能,得先晓得每支程式花了几何工夫。我会问,利用者送出Request恳求後,要多久才会收到第一个Byte的材料?良多开辟人员不知道这个工夫(First Byte Latency)是多久,不知道本人的程式码用失落几何工夫?可以透过Profile来追踪效能,画出视觉化的效能流程图,来懂得瓶颈在哪。

乃至要思索到单一机械上的延迟,透过体系层级的追踪程式,晓得程式履行的每个体系呼唤(System Call)消耗多久。还要思索阅读器中的延迟,从利用者实践感触感染的速度来改良网页履行体例等。
每次你增添一个新功效,要能盘算出新功效会增添几何毫秒,想想这麽做值不值得。

Q:那麽,网站的平安性又需注重哪些准绳?

A:根基精力很复杂,只需用材料防火墙的概念来设计网站。网路防火墙会周密监控每个通信埠,只让没有平安疑虑的封包经由过程,但网站开辟者恰好相反,只挡失落自觉得有风险的内容。开辟者不克不及信任任何从内部获得的材料,借用防火墙概念和手段,创立材料防火墙,就可以进步网站平安性。

Q:好的架构师需求什麽样的前提?

A:必需十分懂得手艺,懂得每个细节,例如设计材料贮存机制,要懂得哪一种材料可以贮存丶可以存多大的档案,放几何材料丶每秒钟可以放多快?若何复制材料?前端必需利用哪一种材料格局等。架构师可以不必像 DBA,晓得若何修复Oracle材料库的毛病,然而要可以懂得Oracle材料库具有的本事。这类人很难找,必需要掉败过良多次,才会有足够的经历。

Q:台湾还有很多旧网站利用PHP 4,他们应当如今晋级到PHP 5吗?仍是守候PHP 6?

A:尽快晋级到PHP 5。只需作一些测试和修正,就可以失掉更好的效能和平安,为什麽不做?不需守候PHP 6,开源社群的运作体例,没法许诺推出工夫。良多新功效已放到PHP 5.3版中,从速从4升到5最主要。一下弹出N多页面!很明显,你的留言本并没有做好安全防范,被人用JS代码小小的耍了一下,我很同情你这个时候的感受,但是没有别的办法了,继续努力吧!
活着的死人 该用户已被删除
沙发
发表于 2015-2-16 00:38:39 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
变相怪杰 该用户已被删除
板凳
发表于 2015-2-16 00:38:39 | 只看该作者
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
不帅 该用户已被删除
地板
发表于 2015-2-18 01:55:35 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
深爱那片海 该用户已被删除
5#
发表于 2015-2-24 05:20:26 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
分手快乐 该用户已被删除
6#
发表于 2015-2-25 08:45:29 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
蒙在股里 该用户已被删除
7#
发表于 2015-2-27 17:48:41 | 只看该作者
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
若天明 该用户已被删除
8#
发表于 2015-3-9 10:44:39 | 只看该作者
爱上php,他也会爱上你。
第二个灵魂 该用户已被删除
9#
发表于 2015-3-11 18:43:20 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
海妖 该用户已被删除
10#
发表于 2015-3-13 00:10:37 | 只看该作者
Ps:以上纯属原创,如有雷同,纯属巧合
愤怒的大鸟 该用户已被删除
11#
发表于 2015-3-17 16:10:47 | 只看该作者
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
冷月葬花魂 该用户已被删除
12#
发表于 2015-3-24 08:50:37 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
飘灵儿 该用户已被删除
13#
发表于 2015-4-1 20:17:06 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
山那边是海 该用户已被删除
14#
发表于 2015-4-3 05:14:53 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
老尸 该用户已被删除
15#
发表于 2015-4-9 21:05:03 | 只看该作者
做为1门年轻的语言,php一直很努力。
爱飞 该用户已被删除
16#
发表于 2015-4-17 23:35:03 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
谁可相欹 该用户已被删除
17#
发表于 2015-4-21 00:55:17 | 只看该作者
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
若相依 该用户已被删除
18#
发表于 2015-4-26 09:10:36 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
admin 该用户已被删除
19#
发表于 2015-5-1 07:10:13 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
莫相离 该用户已被删除
20#
发表于 2015-5-1 16:10:33 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-3 08:54

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表