> php教程 > php手册 > PHP命令行如何判断有管道数据输入

PHP命令行如何判断有管道数据输入

WBOY
풀어 주다: 2016-06-06 20:08:25
원래의
1006명이 탐색했습니다.

PHP的STDIN是阻塞操作,直接读取内容的话会造成阻塞.如下代码会一直运行直到有数据输入: $data = stream_get_contents(STDIN); 按理可以通过声明stream_set_blocking(STDIN, FALSE)来操作: stream_set_blocking(STDIN, FALSE);$data = stream_get_contents(ST

PHP的STDIN是阻塞操作,直接读取内容的话会造成阻塞.如下代码会一直运行直到有数据输入:

$data = stream_get_contents(STDIN);
로그인 후 복사

按理可以通过声明stream_set_blocking(STDIN, FALSE)来操作:

stream_set_blocking(STDIN, FALSE);
$data = stream_get_contents(STDIN);
로그인 후 복사

运行依旧不行,其实这是一个Bug,描述:https://bugs.php.net/bug.php?id=34972

通过测试发现,可用通过ftell函数获取STDIN文件句柄指针读/写的位置来判断.

if(ftell(STDIN)===0){
    $data = stream_get_contents(STDIN);
}
로그인 후 복사
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿