当前位置:首页 - 奇乐彩票app - 正文

君子好学,自强不息!

原始标题:php://output和php://stdout之间的区别

PHP包括一系列以php://开头的输出流,如php://stdin、php://stdout等。看着今天的代码,我突然想到一个问题:php://output和php://stdout有什么区别?

从PHP的官方文档中寻找答案,输入流php://stdin和php://input的解释如下(输出流的解释太简短):

php://stdin

php://stdin、php://stdout和php:// stderr允许直接访问php进程的相应输入或输出流。该流引用了一个重复的文件deor,因此如果您打开php://stdin,然后关闭它,您只需关闭deor的副本,stdin引用的实际流不受影响。请注意,在PHP 5.2.1之前,PHP在这方面表现出了错误的行为。建议您简单地使用常量STDIN、STDOUT和STDERR,而不是使用这些包装器手动打开流。

php://stdin是只读的,而php://stdout和php://stderr是只读的。

php://input

php://input是一个只读流,允许您从请求体读取原始数据。在发布请求的情况下,最好使用php://input而不是$HTTP_RAW_POST_DATA,因为它不依赖于特殊的php.ini指令。此外,对于默认情况下不填充$HTTP_RAW_POST_DATA的情况,它是激活总是填充_RAW_POST_DATA的一种潜在的内存密集型替代方法。php://input不适用于enctype="multipart/form-data "。

php://stdin、php://stdout和php:// stderr允许直接访问php进程的相应输入或输出流。该流引用了一个重复的文件deor,因此如果您打开php://stdin,然后关闭它,您只需关闭deor的副本,stdin引用的实际流不受影响。请注意,在PHP 5.2.1之前,PHP在这方面表现出了错误的行为。建议您简单地使用常量STDIN、STDOUT和STDERR,而不是使用这些包装器手动打开流。

展开全文

php://stdin是只读的,而php://stdout和php://stderr是只读的。

php://input

php://input是一个只读流,允许您从请求体读取原始数据。在发布请求的情况下,最好使用php://input而不是$HTTP_RAW_POST_DATA,因为它不依赖于特殊的php.ini指令。此外,对于默认情况下不填充$HTTP_RAW_POST_DATA的情况,它是激活总是填充_RAW_POST_DATA的一种潜在的内存密集型替代方法。php://input不适用于enctype="multipart/form-data "。

该文件没有直接解释两者之间的区别,仔细比较可以获得以下信息:1。两者都是只读流;2.php://stdin是php过程的标准输入。php://input用于读取请求体的原始数据。通过这些信息,如何正确理解两者之间的本质区别?

遵循php://stdin流程的输入提示,将php流程的执行流程与SAPI的差异联系起来,可以得到两者的主要区别:php://stdin是PHP流程的输入流,在执行生命周期中可能会有数据流入(例如命令行界面下的交互输入);Php://input是执行Php时的外部输入流,一般数据只能读取一次(详见SAPI的实现)。同样,我们可以得到php://stdout和php://output之间的区别:php://stdout是php进程的标准输出流,php://output是返回的结果数据流。

以下代码验证了该结论:

//文件:test.php

file _ put _ contents(“PHP://output”,“由output发送的消息”。PHP _ EOL);

file _ put _ contents(“PHP://stdout”,“stdout发送的消息”。PHP _ EOL);

打印(“通过打印发送的消息”)。PHP _ EOL);

回声“SAPI”:

命令行执行文件,输出如下:

输出发送的消息

stdout发送的消息

通过打印发送的消息

SAPI:cli

浏览器端请求,输出如下:

输出发送的消息

通过打印发送的消息

SAPI:fpm-fcgi

在命令行中,标准输出流和PHP过程的结果输出流都指向终端,所有消息都被打印出来。在浏览器端,PHP进程的输出流被忽略,只有结果数据流被发送到网络服务器。同时,由打印和回显调用的信息作为执行结果被发送到结果输出流,因此它们被正常显示。

最后,让我们谈谈PHP内置函数的简单性和实用性。file_put_contents函数可以处理流写入操作。改变Java需要来自流/编写器的大量代码,并且它还节省了C风格的fopen/fwrite/fclose的复杂性。

参考链接

1.http://php.net/manual/en/wrappers.php.php回到搜狐看更多

负责任的编辑:

这里是分享代码,在后台添加

本文来源:中富彩如何注册购彩票

本文地址:https://caizhucequiz.cn/post/29.html

关注我们:微信搜索“xiaoqihvlove”添加我为好友

版权声明:如无特别注明,转载请注明本文地址!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。


Operation timed out after 30000 milliseconds with 0 bytes received