gpt4 book ai didi

PHP - 检测 STDIO 输入

转载 作者:可可西里 更新时间:2023-10-31 23:30:31 24 4
gpt4 key购买 nike

我想要的是能够有选择地通过管道将 STDIO 连接到 PHP 脚本。如果没有,它将改为从文件中获取输入。所以有时我会简单地运行脚本,其他时候我会做类似

grep text logfile | php parseLog.php

我有一个非常像这样的循环,当 STDIO 存在时它工作正常:

while (FALSE !== ($line = fgets(STDIN)))
{
$customLogArr[]=$line;
}

当没有 STDIO 时,虽然它会停止等待一些,但它甚至不会进入循环。

我想做的是能够检测我是否有 STDIO 输入。有办法吗?

最佳答案

看起来有些事情发生了变化,或者这些答案都不正确。您不能简单地通过 ftell(STDIN) 查看是否有从 STDIN

传递的数据
<?php

$stdin = fopen('php://stdin', 'r');
var_dump(ftell($stdin));

输出

-:4:
bool(false)

这是来自 php -v 的输出

PHP 7.0.22-0ubuntu0.16.04.1 (cli) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.22-0ubuntu0.16.04.1, Copyright (c) 1999-2017, by Zend Technologies
with Xdebug v2.4.0, Copyright (c) 2002-2016, by Derick Rethans

当我尝试使用 STDIN 常量时,我​​得到了

PHP Notice:  Use of undefined constant STDIN - assumed 'STDIN' in - on line 3

关于PHP - 检测 STDIO 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28571139/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com