Какой лучший способ использовать API Twitter через PHP? - PullRequest
6 голосов
/ 04 июня 2009

Клиент хотел бы, чтобы я добавил их поток Twitter на домашнюю страницу своего веб-сайта, используя специальное решение, встроенное в PHP.

Очевидно, что API Twitter имеет ограниченное количество вызовов, которые вы можете совершать в него в час, поэтому я не могу автоматически пинговать Твиттер каждый раз, когда кто-то обновляет домашнюю страницу моего клиента.

Веб-сайт клиента на данный момент является чисто HTML, поэтому нет базы данных . Поэтому мое решение должно требовать только PHP и локальной файловой системы (например, сохранение локального файла XML с некоторыми данными в нем).

Итак, с учетом этих ограниченных критериев, как лучше всего получить доступ к API Twitter - через PHP - без превышения лимита вызовов API в течение нескольких минут?

Ответы [ 6 ]

3 голосов
/ 04 июня 2009

Будет очень просто, если вы сможете развернуть временную шкалу и отобразить ее, а затем добавить к ней некоторое файловое кеширование.

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 Cache_Lite сделает все необходимое на слое кэширования.

0 голосов
/ 04 июня 2009
array(
'lastrequest' => 123,
'tweets' => array ()
)

Теперь в вашем коде поставьте галочку, чтобы увидеть, не более ли отметка времени в хранилище данных для последнего запроса более чем на X секунд. Если пришло время обновить ваши данные.

сериализует и сохраняет массив в файле, довольно просто

0 голосов
/ 04 июня 2009

Мое предложение: создайте небольшой простой объект для хранения даты кеша и массива твитов. Каждый раз, когда кто-то посещает страницу, он выполняет следующую логику:

A) Файл существует?

Да: прочитать его в переменную Нет: перейдите к шагу D)

B) Отменить сериализацию переменной (пара PHP serialize () / unserialize () вполне подойдет)

C) Сравните срок хранения кэша с текущим временем (отметка времени Unix сделает это) Свыше 5 минут друг от друга:

D) Получите последние твиты из Twitter, обновите объект, сериализовайте его и снова запишите в кеш. Храните самые новые твиты для печати тоже. Это не так: просто читайте твиты из кеша.

E) Распечатать твиты

Простейшим и простым способом сериализации объекта является пара serialize () / unserialize (). Если вы не хотите откладывать усилия по созданию объекта, вы можете просто использовать 2D-массив, serialize () будет работать нормально. Посмотрите на http://php.net/serialize

Учитывая, что у вас нет доступа к cPanel, это лучшее решение, поскольку у вас не будет доступа к пакетам PEAR, cron или любым другим более простым решениям.

0 голосов
/ 04 июня 2009

Вы можете использовать TweetPHP Тимом Дэвисом. http://lab.lostpixel.net/classes/twitter/ - В этом классе есть множество функций, включая ту, которая вам нужна, и показывает график времени ваших клиентов. На странице приведены хорошие примеры того, как его использовать.

Затем вы можете поместить это в файл или базу данных. Если вы хотите, чтобы посетитель сайта обновлял базу данных или файл, как каждые 5 минут, вы можете установить переменную сеанса, содержащую отметку времени, и просто разрешить другое обновление, если отметка времени была не менее 5 минут назад.

Надеюсь, это поможет

0 голосов
/ 04 июня 2009

Поскольку мы не знаем настройки вашего сервера, я предлагаю вам настроить работу cron (при условии, что вы работаете в Linux). Если у вас есть что-то вроде cPanel в среде общего хостинга, то это не должно быть большой проблемой. Вам нужно написать скрипт, который вызывается cron и который получит последние твиты и запишет их в файл (xml?). Вы можете запланировать запуск cron каждые 30 минут. или что ты хочешь.

0 голосов
/ 04 июня 2009
  1. задание cron (не likley - если нет даже базы данных, значит, заданий cron нет)
  2. записать microtime() в файл. на странице просмотра сравнить текущую метку времени с сохраненной. если разница больше N минут, вытяните новый твит и запишите текущую метку времени в файл
  3. если на первой странице находится статический html-файл, не вызывающий php, включите изображение <img src="scheduler.php"/>, которое возвращает прозрачный GIF размером 1 пиксель (по крайней мере, вы делали это таким образом, когда я был молодым) и выполняло твиттер-молчание

или вы имеете в виду локальную -локальную файловую систему, как в "мой / клиентский компьютер, а не сервер" -локальная?

в данном случае:

  1. получить сервер с заданием cron или планировщиком и PHP
  2. написать скрипт, который читает и сохраняет ленту в файл
  3. записать файл на сервер клиентов по FTP
  4. отображать канал с использованием javascript (да, ajax также работает со статическими файлами в качестве источников данных). JQuery или какой-либо lib отлично подходит для этого
  5. или: создайте html-файл, отображающий твиты, и загрузите его (но будьте осторожны ... потому что вы можете перезаписать обновления на сервере)

imo: для маленьких сайтов вам все равно просто не нужна полностью выращенная база данных sql. Файловые системы великолепны. комбинация scandir , preg_match и тщательно подобранных имен файлов часто достаточно хороши.
и вы на самом деле можете выполнять большую часть обработки интерфейса (например, отображение XML), используя красивый JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...