客户希望我使用PHP内置的自定义解决方案将他们的Twitter流添加到他们的网站主页。
Twitter API显然每小时可以拨打的电话数量有限,因此每次有人刷新我客户的主页时,我都无法自动ping通。
客户的网站目前仅为HTML,因此无数据库可用。因此,我的解决方案只需要PHP和本地文件系统(例如,保存本地XML文件中包含一些数据)。
所以,鉴于这个有限的标准,我通过PHP访问Twitter API的最佳方式是什么,而不会在几分钟内达到我的API调用限制?
答案 0 :(得分:3)
一旦你可以下拉时间线并显示它,然后为它添加一些基于文件的缓存,这将非常容易。
check age of cache
Is it more than 5 mins old?
fetch the latest information
regenerate the HTML for output
save the finished HTML to disk
display the cached pre-prepared HTML
PEAR's Cache_Lite将在缓存层上执行您所需的一切。
答案 1 :(得分:0)
microtime()
写入文件。在页面视图上将当前时间戳与已保存的时间戳进行比较。它的差异大于N分钟,拉新的tweetfeed并将当前时间戳写入文件<img src="scheduler.php"/>
(至少你在我年轻的时候这样做)并且你的推特 - 静静地拉着或者您的意思是本地 - 本地文件系统,如“我/客户计算机而非服务器” - 本地?
在这种情况下:
imo:对于小型网站,您通常不需要完全成熟的SQL数据库。文件系统很棒。 scandir,preg_match和精心挑选的文件名的组合通常足够好 你可以使用漂亮的javascript实际进行大量的前端处理(比如显示XML)。
答案 2 :(得分:0)
由于我们不知道您的服务器配置,我建议您设置一个cron作业(假设您在Linux机器上)。如果你在共享托管环境中有类似cPanel的东西,那么它应该不是什么大问题。你需要编写一个由cron调用的脚本,它将获取最新的推文并将它们写入文件(xml?)。您可以安排cron每30分钟运行一次。或者你想要什么。
答案 3 :(得分:0)
您可能想要使用Tim Davies的TweetPHP。 http://lab.lostpixel.net/classes/twitter/ - 此课程有许多功能,包括您想要的功能,显示您的客户时间表。 该页面显示了如何使用它的很好的例子。
然后,您可以将其输出放在文件或数据库中。如果您希望站点访问者每5分钟更新一次数据库或文件,则可以设置一个包含时间戳的会话变量,如果时间戳至少为5分钟,则允许另一次更新。
希望这有帮助
答案 4 :(得分:0)
我的建议:创建一个小的简单对象来保存缓存日期和一组推文。每当有人访问该页面时,它都会执行以下逻辑:
A)文件存在吗?
是:将其读入变量 否:继续执行步骤D)
B)反序列化变量(PHP对serialize()/ unserialize()就可以了。)
C)将存储的缓存时间与当前时间进行比较(Unix时间戳会这样做) 它相隔超过5分钟:
D)从Twitter获取最新推文,更新对象,序列化并再次写入缓存。存储最新的推文以进行打印。 它不是:只需从缓存中读取推文即可。
E)打印推文
序列化对象的最简单和最简单的方法是serialize()/ unserialize()对。如果你不愿意放弃制作对象的努力,你可以只使用2D数组,serialize()就可以了。请查看http://php.net/serialize
考虑到您没有cPanel访问权限,它是最佳解决方案,因为您无法访问PEAR包,cron或任何其他更简单的解决方案。
答案 5 :(得分:0)
array(
'lastrequest' => 123,
'tweets' => array ()
)
现在在您的代码中进行检查,以查看lastrequest数据存储区中的时间戳是否超过X秒。如果是时候更新您的数据了。
将数组序列化并存储在一个文件中,非常简单