0

我有一个无法完全访问的 Icecast 服务器(流式网络广播),我无法更改它的任何直接设置。所有 Icecast 服务器都有一个自行生成的 xml,用于显示有关流的当前信息(听众、持续时间、流名称,最重要的是,当前播放的歌曲标题),但是它无法显示最后 5 或 10 首曲目。

[顺便说一句:有一些方法可以获取这些信息,但要么处理不当,要么信息与其他信息混杂在一起,不易获取。请不要关注这部分,因为我的问题是关于其他的;我只是想给你这个问题的背景]

我已经有一个 PHP 脚本,它采用这个 xml 文件,并提取当前歌曲的标题。我想创建另一个 PHP 脚本来获取这首歌的标题并将其添加到一个数组中。它将每 30 秒运行一次此脚本,并将当前歌曲标题添加到数组中。如果当前歌曲标题和数组中的第一首(最新歌曲添加到数组的“顶部”)匹配,则不添加任何项目(以避免由于歌曲超过 30 秒而导致重复标题)。如果项目数达到 11,则删除最后一个项目,以保持数组为 10。

有了这个数组,我就可以随时调用它,并获得最后 10 首曲目的可靠来源。

我的问题是:如何通过 PHP 创建一个每 30 秒运行一次的数组,并且可以通过另一个 PHP 脚本轻松访问?或者有比 PHP 脚本更好的方法吗?如果有,请详细说明。

我知道 MySQL 是一种选择,但我宁愿避免这种情况,因为这样的事情似乎有点矫枉过正。我对使用 MySQL 也不是很熟悉。

我已经看到一些关于在服务器上运行关于调度脚本的 cron 作业的讨论。我不知道这是否是最好的解决方案,但如果是,你能更详细和具体吗?我对cron一无所知。

编辑:我希望这个数组对所有用户都是通用的,而不是相对的。该数组不能存在于单个用户的浏览器中,但必须位于服务器上。

4

2 回答 2

1

如果您不想使用数据库,只需将其保存到文件中?

http://php.net/manual/en/function.file-put-contents.php

于 2012-07-21T17:15:47.170 回答
-1

Cron 作业设置为在服务器上以编程方式工作,它与任何客户端都不相关。所以这不是你要找的。

如果我是你,我会创建一个 cookie 并将当前曲目数据分配给它。这可以通过 Javascript 轻松处理。您需要做的就是设置一个setInterval函数来检查它是否是最后一个轨道,如果不是,则处理cookie中的数组。

于 2012-07-21T17:00:29.500 回答