使基于cli的PHP脚本的输出可以从web上查看,而无需管道传输到文件


Make output of cli based PHP script viewable from web without piping to a file?

我有一个命令行PHP脚本,它在"屏幕"会话中在服务器上不断运行(无限循环)。PHP脚本使用echo输出各种数据行。

我想做的是创建一个PHP web脚本来连接命令行脚本,这样我就可以查看echo输出,而不必通过SSH连接到服务器。

我曾考虑过将所有的echo语句写入/管道传输到一个文本文件,然后让web脚本读取该文本文件。这里的问题是,文本文件将在几分钟内增长到几兆字节。

有人知道更优雅的解决方案吗?

如果你有expect_popen,我认为它会对你有用。

另一种选择是使用命名管道——不使用磁盘,读取端有可用的输出。

CLI脚本可以写入如下文件:

file_put_contents( '/var/log/cli-log-'.date('YmdHi').'.log', $data );

从而每分钟创建一个新的日志文件以降低文件大小。然后你可以在这一点上清理目录,删除以前的日志文件或移动它们,或者做任何你想做的事情

然后web脚本可以从当前日志文件中读取,如下所示:

$log = file_get_contents( '/var/log/cli-log-'.date('YmdHi').'.log' );

正如Elias Van Ootegem所建议的,我肯定会推荐一个cron,而不是一个不断运行的脚本。

如果你想查看网络脚本中的数据,你可以做一些事情。。。。一种是将数据写入日志文件或数据库,以便以后可以将其取出。。。。如果有这么多数据(如果可能的话),我会考虑限制你的输出。

我有很多crons给我发电子邮件的数据,不确定这是否对你有用,但我想我会提到它。

我能想到的最优雅的建议是在web脚本中使用exec运行命令,如果您使用以下命令,该脚本将直接输出到浏览:http://php.net/manual/en/function.flush.php