PHP 搭建便携服务器

yuanoook
yuanoook 发布于 2016-04-06 11:02:16 浏览:603 类型:原创 - 随笔 分类:开发调试 - PHP 二维码: 作者原创 版权保护
PHP 搭建便携服务器

经常测试 html ,经常需要服务器的配合,传递静态文件,响应 json 数据请求等等

本地内网移动端测试也需要

以前用 NODE 写过一个 http://www.w3cfuns.com/notes/14332/a4bfa4a5e681dba117b11b54e24db6fc.html

这两天看 PHP ,用 php 实现一个,代码量和 node 相当

php 和 node 有两点感觉不一样:

1. php 类似于 超级函数,天生自带 request 和 response 技能(好像也是大家唯一主要使用的技能)。node 需要 http 模块配合。

2. php 是用函数构建起来的语言,你能想到的功能,99%有对应自带函数来实现(果然是世界上最好的语言)。功用类似的函数,用带下划线的前缀组织在一起,比如 preg_xxx 都是perl正则相关的函数。

    而相同的功能实现,nodejs 则是用模块,对象及属性方法组织起来的。

    语法比较起来,php 是:谓语动词(主语,宾语),js 则是:主语.方法(宾语)

举个例子

输出文件需要获取文件的 mime type,php 当然有函数 mime_content_type( $filename );

node 则需要自行处理(这样很蛋疼,每次为了支持新的文件类型,都要手动去处理),或者使用开放的模块 https://github.com/broofa/node-mime

其实语言都在不断演进,不断相互学习。php 的新版本支持匿名函数,对经常写 js 的,这一点简直爽歪歪。

运行方式,shell

php -S 0.0.0.0:80 index.php

*下面的代码 需要把 $ {1} 中间的空格都去掉
<?php
$request_uri = '.'.urldecode($_SERVER['REQUEST_URI']);
if( is_dir($request_uri) ){

    // server use the relative directory
    $dirname = preg_replace('/\/{2}/', '/', $request_uri.'/');

    $files_arr = array_filter(scandir($dirname), function($file_name){
        return false == (bool)preg_match('/^\.+/', $file_name);
    });

    // browser use the absolute path_name which bases on the server root directory
    $browser_path = preg_replace('/^\./', '', $dirname);

    printf('<!DOCTYPE HTML>
            <html>
                <head>
                    <meta charset="utf-8">
                    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0">
                </head>
                <body>
                    %s
                </body>
            </html>',
            implode(
                preg_replace('/^(.*)$/', '<a href="'.$browser_path.'$ {1}">$ {1}</a>', $files_arr),
                '<br/>'
            )
        );
}else{
    header('Content-Type: '.mime_content_type($request_uri));
    echo file_get_contents($request_uri);
}
标签:
z
给个赞 1 人点赞
收藏 2 人收藏
评论 已有 0 条评论;以下用户言论只代表其个人观点,不代表 前端网(QDFuns) 的观点或立场。
登录 以后才能发表评论
最新评论
还没有任何评论呢,赶紧抢先来一发吧!
yuanoook yuanoook 作者

享受平凡 | 追求卓越

作者最新