美文网首页
20160602收获

20160602收获

作者: 邓楼平 | 来源:发表于2016-06-02 16:55 被阅读0次

CGI:

CGI(Common Gateway Interface) 是WWW技术中最重要的技术之一,有着不可替代的重要地位。CGI是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。

PHP与apache的关系:
Apache是Web服务器,负责回应所有收到的Web请求。比如你访问http://zhihu.com/1.html,那么Apache就找到根目录下的1.html文件,将其中的内容返回。

如果我需要这个地址能显示动态的东西,比如当前日期时间,那么就写一个PHP程序1.php,当Apache收到http://zhihu.com/1.php的请求时,通过CGI调用PHP解释程序,执行1.php文件的内容,然后将返回的字符串返回给客户端。

Web 应用、服务是如何工作的:

apache处理的是最底下的两层,网络通信层和协议层。

网络通信层:包括tcp网络通信的若干工作,比如bind, listen, connect, receive, send, disconnect。

协议层:apache可以处理http协议中的request和response,并且可以解释header和body。

mod_python/wsgi/cgi是中间部分。

先说最简单的cgi。

cgi是通过系统标准的进程调用的方式调用上层程序来完成逻辑部分的处理。cgi将apache整理好的request header和request body分别以env和stdin的方式发给上层程序,然后将上层程序的stdout返回给apache。

后来人们觉得,每一个请求都产生一个进程,这样做效率太低。所以后来人们发明了fastcgi。它的原理大概的意思是说fastcgi启动一个常驻进程。每次当apache接到request的时候,通过IPC或者socket将请求内容发给fastcgi进程,然后fastcgi再转发给上层应用。

fastcgi支持C、PHP等多种语言。

后来又有人针对Python语言做了好多优化工作,产生了mod_python和wsgi。

Django上最上层的逻辑部分。

cgi => Django:

Python程序被以一个进程的方式被启动。Django首先要读取env和stdin,整理成request header和request body,从中找到URI字段,然后根据url映射关系找到对应的函数开始执行。最后将函数的返回值以某种固定的格式输出给stdout。

mod_python/wsgi => Django:

过了mod_python/wsgi之后,就全是Python程序了。request header、request body和response被mod_python/wsgi整理成了Python对象。例如字典、FileIO等。

Django拿到这些对象之后,就可以从request header中找到URI,然后根据url映射关系找到对应的函数开始执行。之后将函数的返回值整理成mod_python/wsgi可以接受的response对象(实际上就是一个str或者generator)返回给mod_python/wsgi。

相关文章

  • 20160602收获

    CGI: CGI(Common Gateway Interface) 是WWW技术中最重要的技术之一,有着不可替代...

  • 20160602

    这个端午是在家过得,对爸妈坦白了,放飞自我了,本想着回家至少有2天可以复习,结果只留了一个晚上。 我要好好生活,因...

  • 20160602

    终于忙碌已经告一段落,回家。

  • 20160602

    居然真的让我找到了这样可以专门写字的地方。 后天就要考雅思的我,看了一整个上午的程又青和李大仁,没有一点紧迫感。 ...

  • 20160602

    不必站在50岁的年龄,悔恨30岁的生活,也不必站在30岁的年龄,悔恨17岁的爱情。很多事情是不能只拿结果来判定的,...

  • 关于iOS socket都在这里了

    http://www.cocoachina.com/ios/20160602/16572.html

  • Socket通信原理

    详细参考:http://www.cocoachina.com/ios/20160602/16572.html so...

  • 关于iOS socket都在这里了

    很好的文章:原文链接http://www.cocoachina.com/ios/20160602/16572.html

  • 20160602CF

    游戏:10个波比,4个壶铃摇摆 实力推14kg 硬拉57.5kg

  • 一日得 20160602

    1、鲧用了九年的时间治理黄河水患,苦心孤诣,坚持筑堤堵水,最终没有成功而以死谢罪。禹为探寻治水的有效方法,走遍大山...

网友评论

      本文标题:20160602收获

      本文链接:https://www.haomeiwen.com/subject/rvxarttx.html