0

完全なアクセス権を持たない Icecast サーバー (インターネット ラジオのストリーミング) を使用していますが、直接設定を変更することはできません。すべての Icecast サーバーには、ストリームに関する現在の情報 (リスナー、再生時間、ストリーム名、そして最も重要な現在再生中の曲のタイトル) を表示する自己生成 xml がありますが、最後の 5 トラックまたは 10 トラックを表示する方法はありません。

[余談ですが、この情報を取得する方法はいくつかありますが、正しく処理されていないか、情報が他の情報とごちゃまぜになっていて、簡単にアクセスできません。私の質問は別のことに関するものなので、この部分に集中しないでください。質問の背景を説明したかっただけです]

この xml ファイルを取得し、現在の曲のタイトルを抽出する PHP スクリプトが既にあります。この曲のタイトルを取得して配列に追加する別の PHP スクリプトを作成したいと考えています。このスクリプトは 30 秒ごとに実行され、現在の曲のタイトルが配列に追加されます。現在の曲のタイトルと配列の最初 (最新の曲は配列の「先頭」に追加されます) が一致する場合、項目は追加されません (曲が 30 秒を超えた結果としてタイトルが重複するのを避けるため)。アイテムの数が 11 に達すると、配列を 10 に保つために最後のアイテムが削除されます。

この配列を使用すると、いつでも呼び出すことができ、最新の 10 トラックの信頼できるソースを取得できます。

私の質問は、30 秒ごとに独自に実行され、別の PHP スクリプトから簡単にアクセスできる配列を PHP 経由で作成するにはどうすればよいですか? または、PHP スクリプトよりもこれを行うためのより良い方法はありますか? もしそうなら、詳しく教えてください。

MySQL がオプションであることは知っていますが、このようなものにはやり過ぎのように思えるので、それは避けたいと思います。また、MySQL の操作に慣れていません。

サーバー上でのスクリプトのスケジューリングに関する cron ジョブの実行についての議論を見てきました。これが最善の解決策かどうかはわかりませんが、もしそうなら、より詳細かつ具体的に教えていただけますか? 私はcronについて何も知りません。

編集:この配列は、相対的ではなく、すべてのユーザーに共通のものにしたいと思います。配列は、1 人のユーザーのブラウザー内に存在することはできませんが、サーバー上に存在する必要があります。

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 に答える