我们在开发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:
1/*2* cli模式或者内置server打印调试信息,而不在浏览器输出
3* param fixed $data 参数可以是除了对象以外的所有数据类型,比如:字符串,数组,jason等
4*/5function console($data){
6$stdout = fopen(‘php://stdout’, ‘w’);
7fwrite($stdout,json_encode($data).”\n”); //为了打印出来的格式更加清晰,把所有数据都格式化成json字符串8fclose($stdout);
9 }
当需要在内置server每一个请求后,打印当前的调试信息时:直接调用console()即可
比如:
打印所有接收到的get或post参数:
console($_get);
console($_post);
打印字符串:
console(“hello php console debug”);
以后再也不用羡慕python和java的控制台输出,php从此也有控制台输出函数了
以上就介绍了php内置web server探究(二)自定义php控制台输出console函数,包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。