实现了一个简单的 web 服务器,拿出来晒晒 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jayki
V2EX    PHP

实现了一个简单的 web 服务器,拿出来晒晒

  •  2
     
  •   jayki 2016-05-10 09:12:03 +08:00 6209 次点击
    这是一个创建于 3516 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个简单的 web 服务器,支持 php

    地址: https://github.com/jaykizhou/php-server

    欢迎 v 友 star & 赐教!

    35 条回复    2016-05-11 09:16:00 +08:00
    qcloud
        1
    qcloud  
       2016-05-10 09:14:15 +08:00
    cool
    jayki
        2
    jayki  
    OP
       2016-05-10 09:38:02 +08:00
    @qcloud 哈哈, 3Q
    hardyfish
        3
    hardyfish  
       2016-05-10 09:39:18 +08:00
    NBlity
    chineselittleboy
        4
    chineselittleboy  
       2016-05-10 09:44:44 +08:00 via iPhone
    不会是实验楼的那个吧
    jayki
        5
    jayki  
    OP
       2016-05-10 09:51:56 +08:00
    @chineselittleboy 这都能遇到熟人,~_~
    jayki
        6
    jayki  
    OP
       2016-05-10 09:52:41 +08:00
    @hardyfish 抱拳
    shellcodecow
        7
    shellcodecow  
       2016-05-10 09:56:58 +08:00
    star
    gpw1987
        8
    gpw1987  
       2016-05-10 10:11:24 +08:00
    牛逼呀
    ajan
        9
    ajan  
       2016-05-10 10:30:12 +08:00
    star, 都是高人
    woodrat
        10
    woodrat  
       2016-05-10 10:58:12 +08:00
    同时参考 csapp 写的,之前搞了个 wsgi 的,不过还有 N 多 bug 没修。。。
    地址 : https://github.com/Mithrilwoodrat/toyws
    我的[博客](woodrat.xyz)里面有详细介绍
    woodrat
        11
    woodrat  
       2016-05-10 11:01:02 +08:00
    @woodrat 同是打成了同时。。。。
    aljun
        12
    aljun  
       2016-05-10 11:19:20 +08:00
    请教一下,写一个类似的 wsgi 服务器的话,应该看些什么呢?并非 c 语言程序员, c 只有学校教的水平
    jayki
        13
    jayki  
    OP
       2016-05-10 11:20:08 +08:00
    @shellcodecow 感谢
    jayki
        14
    jayki  
    OP
       2016-05-10 11:20:20 +08:00
    @gpw1987 抱拳
    jayki
        15
    jayki  
    OP
       2016-05-10 11:21:00 +08:00
    @woodrat 哈哈, see see
    jimzhong
        16
    jimzhong  
       2016-05-10 11:31:23 +08:00
    LZ 是不是参考了 CS:APP 那本书,看着有些函数名很像。
    woodrat
        17
    woodrat  
       2016-05-10 11:51:05 +08:00
    @aljun 我写过一篇关于这个的[博客]( http://woodrat.xyz/2016/04/24/%E7%BC%96%E5%86%99%E4%B8%80%E4%B8%AA%E6%9C%80%E7%AE%80%E5%8D%95%E7%9A%84-wsgi-server/ )
    主要参考 https://ruslanspivak.com/lsbaws-part2/ 和 PEP 333 。
    如果你要用 C 写的话可以参考一下 https://github.com/jonashaag/bjoern 这个库
    cxshun
        18
    cxshun  
       2016-05-10 11:52:22 +08:00
    牛,赞楼主!
    jayki
        19
    jayki  
    OP
       2016-05-10 12:58:40 +08:00
    @jimzhong 点头
    jayki
        20
    jayki  
    OP
       2016-05-10 13:02:38 +08:00
    @cxshun 感谢,哈哈
    lz3259
        21
    lz3259  
       2016-05-10 13:54:03 +08:00
    我理解就是把 fastcgi 封装成了 http ?
    jayki
        22
    jayki  
    OP
       2016-05-10 14:32:04 +08:00
    @lz3259 fastcgi 定义了 web 服务器与 php 解释器之间的通信协议规范,建立在 tcp 协议上,可以看成与 http 一样同属应用层协议,就像 http 定义了客户端与 web 服务器之间的通信协议规范
    liamxd
        23
    liamxd  
       2016-05-10 15:37:22 +08:00
    那儿有部署好的可以看看的?
    reage
        24
    reage  
       2016-05-10 15:41:09 +08:00
    之前自己也搞了一个,设想在嵌入式设备中运行,现在改成代码同步工具。 觉得 web 服务器重点的实现在于内存管理、连接的管理,如果使用 c 写建议封装字符串的操作。
    jayki
        25
    jayki  
    OP
       2016-05-10 18:04:04 +08:00
    @liamxd 没有现成部署好的, sorry
    jayki
        26
    jayki  
    OP
       2016-05-10 18:04:55 +08:00
    @reage 同意,不过我的实现比较简单,没这么复杂
    a15819620038
        27
    a15819620038  
       2016-05-10 18:12:48 +08:00
    不错。
    a15819620038
        28
    a15819620038  
       2016-05-10 18:16:10 +08:00
    实现服务器支持 PHP 、 Python 等还是挺容易的~

    支持楼主,希望楼主继续完善~
    strwei
        29
    strwei  
       2016-05-10 19:11:11 +08:00
    已 start ,不错,赞个
    yxzblue
        30
    yxzblue  
       2016-05-10 20:01:31 +08:00
    挺牛逼
    jayki
        31
    jayki  
    OP
       2016-05-10 21:03:53 +08:00 via Android
    @a15819620038 哈哈,谢谢
    jayki
        32
    jayki  
    OP
       2016-05-10 21:04:39 +08:00 via Android
    @strwei 感谢, 抱拳
    jayki
        33
    jayki  
    OP
       2016-05-10 21:04:51 +08:00 via Android
    @yxzblue 抱拳
    neoblackcap
        34
    neoblackcap  
       2016-05-10 22:23:22 +08:00
    @jayki 至少追加个多进程,要不然一个长耗时的连接过来就 gg 了
    jayki
        35
    jayki  
    OP
       2016-05-11 09:16:00 +08:00
    @neoblackcap 的确是,目前也实现了一个多进程版本的, https://github.com/jaykizhou/php-server/tree/master/schedule ,由于实现的比较粗糙,所以没有说明出来,后续完善吧
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     887 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 22:17 PVG 06:17 LAX 14:17 JFK 17:17
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86