什么';通过PHP使用Twitter API的最佳方式是什么?

什么';通过PHP使用Twitter API的最佳方式是什么?,php,api,twitter,Php,Api,Twitter,一位客户希望我使用PHP内置的自定义解决方案将他们的Twitter流添加到他们的网站主页 Twitter API显然每小时可以调用的次数有限,因此我无法在每次有人刷新我客户的主页时自动ping Twitter 客户的网站目前纯粹是HTML,因此没有可用的数据库。因此,我的解决方案必须只需要PHP和本地文件系统(例如,保存包含一些数据的本地XML文件) 那么,考虑到这个有限的标准,对于我来说,通过PHP访问Twitter API的最佳方式是什么,而不必在几分钟内达到API调用限制 cron作业(不

一位客户希望我使用PHP内置的自定义解决方案将他们的Twitter流添加到他们的网站主页

Twitter API显然每小时可以调用的次数有限,因此我无法在每次有人刷新我客户的主页时自动ping Twitter

客户的网站目前纯粹是HTML,因此没有可用的数据库。因此,我的解决方案必须只需要PHP和本地文件系统(例如,保存包含一些数据的本地XML文件)

那么,考虑到这个有限的标准,对于我来说,通过PHP访问Twitter API的最佳方式是什么,而不必在几分钟内达到API调用限制

  • cron作业(不是likley-如果连数据库都没有,那么就没有cron作业)
  • microtime()
    写入文件。在页面视图中,将当前时间戳与保存的时间戳进行比较。如果差值大于N分钟,则拉取新的tweetfeed并将当前时间戳写入文件
  • 如果头版是一个静态html文件,不调用任何php,则包含一个图像
    ,该图像返回1px透明gif(至少在我年轻时是这样做的),并以静默方式运行twitter
  • 或者您是指本地文件系统,如“我的/客户的计算机而不是服务器”——本地文件系统

    在这种情况下:

  • 使用cron作业或调度程序和PHP获取一些服务器
  • 编写一个脚本,读取提要并将其保存到文件中
  • 使用FTP将文件写入客户服务器
  • 使用javascript显示提要(是的,ajax也可以将静态文件用作数据源)。jquery或一些lib非常适合这样做
  • 或者:在本地创建显示html文件的tweet并上传(但要小心…因为您可能会覆盖服务器上的更新)
  • imo:对于小型站点,您通常不需要完全成长的sql数据库。文件系统很棒。文件名和精心选择的文件名的组合通常足够好。

    实际上,您可以使用漂亮的javascript进行大量前端处理(如显示XML)。

    由于我们不知道您的服务器配置,我建议您设置一个cron作业(假设您在Linux机器上)。如果您在共享托管环境中有类似cPanel的东西,那么这应该不是什么大问题。您需要编写一个由cron调用的脚本,该脚本将获取最新的tweet并将其写入一个文件(xml?)。你可以安排cron每30分钟运行一次。或者你想做什么都行。

    你可能想使用Tim Davies的TweetPHP。-这个类有很多特性,包括你想要的,显示你的客户时间线的特性。 该页面展示了如何使用它的好例子

    然后,您可以将其输出放入文件或数据库中。如果希望站点访问者每5分钟更新一次数据库或文件,那么可以设置一个包含时间戳的会话变量,如果时间戳至少在5分钟前,则只允许再次更新


    希望这能有所帮助

    一旦你可以拉下时间线并显示它,然后向它添加一些基于文件的缓存,这将非常容易

    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
    

    将在缓存层上完成所有需要的操作。

    我的建议:创建一个简单的小对象来保存缓存日期和一组tweet。每次有人访问页面时,它都会执行以下逻辑:

    A) 文件存在吗

    是:将其读入变量 否:转至步骤D)

    B) 取消变量序列化(PHP对serialize()/Unserialize()就可以了)

    C) 将存储的缓存的时间与当前时间进行比较(Unix时间戳可以做到这一点) 彼此之间的距离超过5分钟:

    D) 从Twitter获取最新tweet,更新对象,将其序列化并再次写入缓存。存储最新的tweet以便打印。 它不是:只是从缓存中读取tweets

    E) 打印推文

    序列化对象最简单、最简单的方法是serialize()/unserialize()对。如果您不想推迟创建对象的工作,可以使用2D数组,serialize()就可以了。看一看

    考虑到您没有cPanel访问权限,这是最好的解决方案,因为您无法访问PEAR包、cron或任何其他更简单的解决方案

    array(
    'lastrequest' => 123,
    'tweets' => array ()
    )
    
    现在在代码中检查lastrequest数据存储中的时间戳是否超过X秒。如果是,那么是时候更新您的数据了


    序列化数组并将其存储在一个文件中,非常简单

    只是为了澄清:我并不是要求人们为我写这篇文章!:)我已经很久没有做过PHP了,所以我正在努力掌握解决这个特殊问题的最佳实践。非常感谢您提供的任何见解或建议。“本地文件系统”-这将是服务器本身。“服务器设置”-除了通过FTP可以访问的内容外,我不能触摸任何内容(因此没有cPanel或cron等)。对不起,“服务器设置”应该是“服务器设置”。