我在Tunein.com有一个广播电台。为了更新专辑封面和艺术家信息,我需要发送以下内容
# Update the song now playing on a station
GET http://air.radiotime.com/Playing.ashx?partnerId=<id>&partnerKey=<key>&id=<stationid>&title=Bad+Romance&artist=Lady+Gaga
我能想到的唯一方法就是设置一个PHP / JS页面来更新URL的&amp; title和&amp; artist部分,如果有变化则将其发送出去。但我必须每隔一秒,或至少每隔几秒使用cron执行它。
还有其他更有效的方法吗?
感谢您的帮助。
答案 0 :(得分:1)
此答案中的所有代码均未经过测试。使用风险自负。
由于您不控制第三方API,并且API无法在可用时将信息推送给您(理想情况),您唯一的选择是在某个时间间隔内轮询API以查找更改并且根据需要进行更新。 (请确保API提供商可以使用这样的方法,因为它可能违反旨在防止系统滥用的使用条款。)
您需要某种长时间运行的进程,该进程将以给定的时间间隔执行。
你提到cron调用PHP脚本是一个选项(这里cron是长时间运行的过程)。 Cron非常稳定,是个不错的选择。我相信虽然cron的最小间隔为1分钟。我确信那里有类似的工具,但这些工具可能要求您完全控制服务器。
您还可以使用以下内容使PHP脚本成为长时间运行的过程:
while(true){
doUpdates(); # Call the API, make updates, etc
sleep(5); # Wait 5 seconds
}
如果您确实沿着PHP路线前进,那么某种错误处理将是必须的:
while(true){
try{
doUpdates();
} catch (Exception $e) {
# manage the error
}
sleep(5);
}
个人建议
使用PHP作为守护进程是可能的,但它的测试不如PHP的典型使用。如果给我这个任务,我会使用Node.js用JavaScript编写服务器/应用程序。我更喜欢Node,因为它设计用作长时间运行的进程,而间隔/事件是JavaScript的关键部分,对于这项特定任务,我会比PHP更有信心。