Loving PHP Living PHP Happying PHP

做一个吝啬的PHPer(中)

上一篇 / 下一篇  2006-12-03 22:13:25 / 个人分类:PHP

做一个吝啬的PHPer(中)

--我们把用户当“过客”,而不是“朋友

 

Hosander @ phpchina.com

 

l        如何对待我们的用户,“过客”

 

l        网络编程的流程处理

 

l        AJAX的讨论

 

l        网站升级性--如何处理网站随着用户的增多的系统升级

 

如何对待我们的用户,“过客”

这是一个比较有争议的话题。为什么呢,因为并没有谁能为这个问题指定下唯一的答案。因为从网站本身出发我们当然是希望用户在我们这里能够获得最多的资源与服务。但是,我要说的是Web应用本身就是以流程简单为特点,所以我个人喜欢保持这个风格。

 

说到这个,我想起了一个事情。前一段时间翻译一片技术文章的时候,当时讲到AJAX做的基于的聊天室。里面作者讲到这样的话,他说为什么要用Web来写聊天室呢?也就是说为什么用户会用Web聊天室呢?我觉得他的讲述的不是没有道理。他说:“现在的即时聊天工具从ICQMSN Messager种类非常丰富,而且用户数也很多,用户为什么还会喜欢基于Web的聊天程序呢?因为Web简单,用户不用特意下载一个客户端,而且也没有特别繁琐的认证工具,大家非常快就可以开始聊天了。”

 

为什么要举这个例子呢,我的意思是既然Web所走的路线就是这么简单的。那么,我们就没有必要一味地从技术,或者代码上去追求非常高层次的技术,如果真要实现的话,还不如直接开发客户端来得简单。而且,我们也可以告诉用户B/S结构的应用就是因为Internet的广泛推广所以使得资源的共享非常简单。因此,Internet就没有绝对的安全性和高技术含量。否则的话,浏览器的跨平台,传输的效率等等万维网的特性将不再保持。

 

所以,我们做Web的程序员,索性就放开自己的偏见,正确地理解Web,理解PHP。我们要实现的是为大家做一个轻松的,便捷的,宽松的,快速的互联网世界。因此,不用在乎别人对我们的网站或者程序的评价,这确实不是一个领域的事情。我们要求实现的就是稳定,快速的一个平台。而且,我想用户喜欢Web,也是因为它很简单吧。所以,不一定要做得复杂。

 

好,那有的人就会问我了,既然我们走的是简单的路线。那么,要我们那么多的程序员到底是做什么呢?我们还有好多事情要去处理呢,那就是网络编程。

 

网络编程的流程处理

说到网络编程(Network Programming),我想国内的PHPer有必要对这个概念采取更加慎重的态度。从我本身来说,我原来也是从潜意识下忽略了它的存在。知道这个概念是在ZCE培训的时候。ZCEZend Certification Engineer的缩写。在北京,很多人在聊天的时候都会说起一个词,就是“科班出身”。这个“科班出身”是形容一个人是接受的经典的计算机的教育出身的。那么什么是PHP的科班呢,从广了说就是开源的社区。但那社区的概念有些不真切。我自己从幸运,因为我接受到ZCE的培训,而我从这个培训中得的最大的收获就是从根本上学习了网络编程和PHP

 

说实话,ZCE的培训的概念并不是很难,甚至于在很多人的眼中是过于简单了。这个我想参加过ZCE的人都深有体会。尤其是,当时我们第一期ZCE培训的时候,来的各大网站的主程序员、总监、经理级的PHPer。而且,我记忆犹新的是,第一天培训的时候他们听讲以后,脸上都有些失望。但是,也有不少人从ZCE的体系中学习到PHP的实质。我个人最大的收获就是网络编程了。

 

其实网络编程这个概念,已经不新鲜了。但是,目前许多的PHPer都忽略它了。为什么呢。纵观我们PHP的学习历史,都是从阅读程序开始的。包括我自己,我最早写留言本的时候,开始学习表单,表单提交还有处理表单提交,访问数据库等等。也就是说,大家一开始就接触到了这个系统的每一个细节当中去了。所以,我们忽略了最重要的部分,就是整体去学习B/S架构的应用的背景以及特点。其实所谓的Web2.0和所谓的动态网页就是一个网络编程。也就是根据用户的输入来影响给用户的输出,而我们用PHP所作的是什么呢?就是把输入编程输出的事务逻辑处理。

 

既然是为用户实现的应用,就需要知道用户的意思,然后给出我们的思想。因此,这里面就必然存在着取数据与给数据的过程。所以,我们才需要表单,才需要浏览器。才需要Apache等等环境。

 

那么作为PHPer为什么了解那么多PHP之外的知识,我想现在大家就很清楚了。因为我们所作的是网络编程。

 

回想一下我们最开始学习的C语言的程序,我们用scan函数扫描用户的输入,并判断其是奇数还是偶数,然后告诉用户我们的判断。这就是最简单的从输入到处理再到输出的过程。那么这个模式迁移到互联网以后呢,我们就需要借助计算机通信的技术了。

 

我们需要用户的计算机把用户的输入传递给我们,然后再让服务器把我们的结果传递给用户完成这个过程。因此,我们使用到了计算机通信,我们使用到了通信协议。使用到了加密,使用到了压缩,数据验证等等许多技术。

 

那么为什么PHP的简单会让人如此惊叹呢,那就在于它已经把这么复杂的处理过程都给我们省略了。我们只需要集中精神来处理核心的事务处理即可。其它的输入与输出的网络通信的事宜就交给PHP/LAMP等架构来实现吧。

 

因此,这个部分要总结的是,作为一个合格的PHPer要清楚地认识到这个关键性,并把我们的才智充分发挥出来。做好我们的网络编程!

 

这里举个例子。假设你有两台服务器,一台是web服务器,另外一台是专门存储图片的图片服务器。当用户要上传图片的时候,你怎么操作呢?

 

如果按照传统的处理方式,我们就用Web服务器获取用户的图片,然后再从Web服务器复制到图片服务器。

 

这种处理方式为什么不好呢?因为它没有充分利用网络编程的特点。这样操作的话,无疑会让Web服务器的压力增加许多,因为上传文件考虑到网络编程的特点,用户的带宽会明显影响到上传的进度。而且服务器之间拷贝文件也是资源的消耗。况且这样处理还会影响用户的浏览体验,因为页面肯定要等较长时间才能显示操作成功。

 

在充分理解了网络编程的情况下,我们可以这么处理。比如,我们可以让用户点击上传图片的按钮,然后弹出新的图片上传的窗口。注意,这个新的窗口是图片服务器上下载的页面,然后用户做上传处理。图片服务器接受了图片以后,只需要给Web服务器发送一个信号就可以了。或者它直接更新用户的数据库,更新图片信息也可以了。然后重新刷新主页面就可以解决问题了。

 


TAG: PHP

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar