0

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

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

我曾考虑将所有回显语句写入/管道到文本文件,然后让 Web 脚本读取文本文件。这里的问题是文本文件将在短短几分钟内增长到几兆字节。

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

4

3 回答 3

1

我认为expect_popen会为你工作,如果你有的话。

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

于 2013-07-19T14:00:48.523 回答
0

CLI 脚本可以像这样写入文件:

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

因此每分钟都会创建一个新的日志文件以减小文件大小。然后,您可以在此时清理目录,删除以前的日志文件或移动它们或您想做的任何事情。

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

$log = file_get_contents( '/var/log/cli-log-'.date('YmdHi').'.log' );
于 2013-07-19T13:57:30.613 回答
0

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

如果您想从 Web 脚本查看数据,您可以做一些事情....一个是将数据写入日志文件或数据库,以便稍后将其拉出....我会考虑限制您如果您有这么多数据(如果有可能),则输出。

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

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

于 2013-07-19T13:58:46.030 回答