在服务器上运行一个脚本,该脚本创建一个可以在以后访问的数组(通过php)

时间:2012-07-21 16:47:17

标签: php arrays server-side

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

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

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

有了这个数组,我可以随时打电话给它,并获得最后10首曲目的可靠来源。

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

我知道MySQL是一个选项,但我宁愿避免这种情况,因为这似乎有点像矫枉过正。我也不是那么熟悉MySQL。

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:-1)

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

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