我们在开发APP的服务器端,当和APP进行联调时通常需要实时跟踪URL请求和参数的接收情况。

但PHP并没有像Python或Java专有的控制台输出函数,Python的print()和Java的System.out.println(),PHP的echo,print等函数在直接使用php -f index.php时,可以打印以shell屏幕上,但在cli_server运行时并不能满足把调试信息只打印在shell而不显示在浏览器。

用度娘搜了好久,网上对PHP内置server cli模式的资料少之又少,根本找不到一点有用的信息。

通过查阅PHP官方文档,最后想到PHP的标准输出流STDOUT

  php://output 是一个只写的数据流, 允许你以 print 和 echo 一样的方式 写入到输出缓冲区

当在cli模式下运行时,只要向STDOUT写入数据时,并不需要echo 或 print 就会立即 打印 到 SHELL客户端:

于是,我们可以编写一个自定义函数来封装对sdtout标准输出流的数据的入,相当于随时把想要显示的调度信息打印到shell:

 /*
* cli模式或者内置server打印调试信息,而不在浏览器输出
* param fixed $data 参数可以是除了对象以外的所有数据类型,比如:字符串,数组,jason等
*/
function console($data){
$stdout = fopen('php://stdout', 'w');
fwrite($stdout,json_encode($data)."\n"); //为了打印出来的格式更加清晰,把所有数据都格式化成Json字符串
fclose($stdout);
}

当需要在内置Server每一个请求后,打印当前的调试信息时:直接调用console()即可

比如:

  打印所有接收到的GET或POST参数:

  console($_GET);

  console($_POST);

  

  打印字符串:

  console("hello php console debug");

  

以后再也不用羡慕Python和Java的控制台输出,PHP从此也有控制台输出函数了

PHP内置Web Server探究(二)自定义PHP控制台输出console函数的更多相关文章

  1. PHP内置Web Server探究(一)启动Cli_Server

    自PHP5.4之后 PHP内置了一个Web 服务器(cli_server),类似于Python的内置server一样,方便我们开发阶段的调试 主要使用场景: 1,没有搭建nginx或apache等第三 ...

  2. 内置Web Server

    在终端输入命令:php -S localhost:8000 -t xxx(某个目录或文件) 这个内置的Web服务器主要用于本地开发使用,不可用于线上产品环境. URI请求会被发送到PHP所在的的工作目 ...

  3. php CLI SAPI 内置Web Server

    PHP 5.4.0起, CLI SAPI 提供了一个内置的Web服务器. 这个内置的Web服务器主要用于本地开发使用,不可用于线上产品环境. URI请求会被发送到PHP所在的的工作目录(Working ...

  4. PHP本地开发利器:内置Web Server

    PHP 5.4.0起, CLI SAPI 提供了一个内置的Web服务器. 命令:php -S 这个内置的Web服务器主要用于本地开发使用,不可用于线上产品环境. URI请求会被发送到PHP所在的的工作 ...

  5. php内置web server

    今天刚开始正式学习PHP(之前有一点了解),推荐学习的网站是w3school.一开始不知道tomcat服务器不支持PHP脚本,直接把.php文件放到tomcat里面去运行,结果嵌入的php代码段没有什 ...

  6. 浏览器扩展系列————给MSTHML添加内置脚本对象【包括自定义事件】

    原文:浏览器扩展系列----给MSTHML添加内置脚本对象[包括自定义事件] 使用场合: 在程序中使用WebBrowser或相关的控件如:axWebBrowser等.打开本地的html文件时,可以在h ...

  7. 《Python高效开发实战》实战演练——内置Web服务器4

    <Python高效开发实战>实战演练——开发Django站点1 <Python高效开发实战>实战演练——建立应用2 <Python高效开发实战>实战演练——基本视图 ...

  8. Spark2.1.0——内置Web框架详解

    Spark2.1.0——内置Web框架详解 任何系统都需要提供监控功能,否则在运行期间发生一些异常时,我们将会束手无策.也许有人说,可以增加日志来解决这个问题.日志只能解决你的程序逻辑在运行期的监控, ...

  9. PHP 5.4 内置 web 服务器

    之前 OSC 翻译了一篇文章:在 Windows 上使用 PHP 5.4 内置的 Web 服务器 下面这篇文章来自外刊IT评论翻译的在 Linux 下使用 PHP 5.4 内置 Web 服务器 PHP ...

随机推荐

  1. 光盘卡在MacBook里退不出来咋办?

    如果光盘推不出来了怎么办?很多同学想到的是:上针!不过这招对MacBook Pro毫无用处,因为没有给你插针的地方,没有机械按键,只有键盘右上角一个推出的快捷键,不过在光盘卡在光驱里时,按此健基本无效 ...

  2. 关于接口使用getType的方法的问题

    C#代码如下:    public interface IConfigInfo    {    }    public class A : IConfigInfo    { }    public c ...

  3. angular2 学习笔记 ( ngModule 模块 )

    2016-08-25, 当前版本是 RC 5. 参考 : https://angular.cn/docs/ts/latest/guide/ngmodule.html 提醒 : 这系列笔记的 " ...

  4. Android中的手势

    Android对两种手势行为提供了支持:1.对于第一种手势行为而言,Android提供了手势检测,并为手势检测提供了相应的监听器.2.对于第二种手势行为,Android允许开发者添加手势,并提供了相应 ...

  5. GitHub 如何基於 Node.js 和 Chromium 開發 Atom?

    看到回答里, 多数都没有回答到点子上, 还有些给了非常主观的意见而没有给出实际结论和分析过程. 题主的问题有四个: 1. Github 如何基于 Node.js 和 Chromium 开发 Atom? ...

  6. iOS 9之Safari广告拦截器(Content Blocker)

    金田( github 示例源码) 相对于谷歌对广告拦截的禁止,苹果与之态度截然相反,继Mac版Safari加入广告拦截工具之后,即将到来的iOS9对Safari也引入了内容拦截插件-Content B ...

  7. SDL2.0 学习笔记-1 windows下的第一个测试程序

    SDL全称是Simple DirectMedia Layer,是一个开源的.跨平台(win32,linux,mac)的多媒体开发c语言库. 官方网站 http://www.libsdl.org/ 第一 ...

  8. POJ3729 Facer’s string 后缀数组

                                                                                                      Fa ...

  9. 40 个重要的 HTML5 面试问题及答案

    本文将列出40个重要的HTML 5面试问题及答案,祝各位求职顺利. 目录 介绍 Canvas和SVG图形之间的区别是什么? 如何使用Canvas和SVG绘制矩形? 什么是CSS选择器? 如何使用ID值 ...

  10. Laravel5.2 下使用Form

    laravel到了5.1.*以上版本,便没有了illuminate/html类库的支持, 我试着把illuminate/html类库加入了laravel5.2,依然没有用, 但是laravelcoll ...