Клиент хотел бы, чтобы я добавил свой поток Twitter на свою домашнюю страницу сайта, используя специальное решение, встроенное в PHP.
API Twitter, очевидно, имеет ограниченное количество вызовов, которые вы можете сделать с ним в час, поэтому я не могу автоматически пинговать Twitter каждый раз, когда кто-то обновляет домашнюю страницу моего клиента.
На данный момент веб-сайт клиента является чисто HTML, поэтому базы данных нет. Поэтому для моего решения требуется только PHP и локальная файловая система (например, сохранение локального файла XML с некоторыми данными в нем).
Итак, учитывая этот ограниченный критерий, для меня лучший способ получить доступ к API Twitter – через PHP – без ограничения моего лимита вызовов API в течение нескольких минут?
Это будет довольно просто, как только вы сможете вывести график времени и отобразить его, а затем добавить к нему некоторое кэширование на основе файлов.
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 сделает все, что вам нужно, на уровне кеширования.
microtime()
в файл. на странице просмотра сравнить текущую временную метку с сохраненной. его разница больше, чем N минут, потяните новый твийт-файл и напишите текущую временную метку в файл <img src="scheduler.php"/>
которое возвращает прозрачный gif 1px (по крайней мере, вы сделали это таким образом, когда я был молод) и делает ваш твиттер-вытягивание молча или вы имеете в виду локально-локальную файловую систему, как в «my / the customers computer not the server» -local?
в этом случае:
imo: для небольших сайтов вам часто просто не нужна полностью выращенная база данных sql. файловые системы великолепны. комбинация scandir , preg_match и тщательно выбранных имен файлов часто достаточно хороша.
и вы можете на самом деле сделать много обработки переднего плана (например, отображение XML) с помощью красивого javascript.
Поскольку мы не знаем вашу конфигурацию сервера, я предлагаю вам настроить задание cron (предполагая, что вы на Linux-сервере). Если у вас есть что-то вроде cPanel в среде общего хостинга, это не должно быть проблемой. Вам нужно написать скрипт, который вызывается cron, и он получит последние твиты и напишет их в файл (xml?). Вы можете планировать cron для запуска каждые 30 минут. или что вы хотите.
Вы можете использовать TweetPHP Тимом Дэвисом. http://lab.lostpixel.net/classes/twitter/ – Этот класс имеет множество функций, в том числе тот, который вы хотите, показывая линию времени ваших клиентов. На странице показаны хорошие примеры того, как ее использовать.
Затем вы можете вывести его вывод в файл или базу данных. Если вы хотите, чтобы посетитель сайта обновлял базу данных или файл каждые 5 минут, вы можете установить переменную сеанса, содержащую метку времени, и просто разрешить другое обновление, если отметка времени была не менее 5 минут назад.
Надеюсь это поможет
Мое предложение: создайте небольшой простой объект для хранения даты кеша и массива твитов. Каждый раз, когда кто-то посещает страницу, он выполняет следующую логику:
A) Существует ли файл?
Да: прочитайте его в переменной No: перейдите к шагу D)
B) Unserialize переменная (пара PHP serialize () / unserialize () будет просто прекрасна)
C) Сравните возраст кэша, хранящегося с текущим временем (это сделает временная метка Unix). Его более 5 минут друг от друга:
D) Получайте новые твиты из Twitter, обновляйте объект, сериализуйте его и снова записывайте в кеш. Сохраните новейшие твиты для печати. Его нет: просто прочитайте твиты из кеша.
E) Печать твитов
Простейшим и простым способом сериализации объекта является сериализация () / unserialize (). Если вы не хотите откладывать усилия на создание объекта, вы можете просто использовать 2D-массив, serialize () будет работать нормально. Посмотрите на http://php.net/serialize
Учитывая, что у вас нет доступа cPanel, это лучшее решение, так как у вас не будет доступа к пакетам PEAR, cron или любым другим более простым решениям.
array( 'lastrequest' => 123, 'tweets' => array () )
теперь в вашем коде поставьте чек, чтобы увидеть, является ли метка времени в хранилище данных для lastrequest больше, чем X секунд. Если это то время, когда вы обновляете свои данные.
сериализовать и хранить массив в файле, довольно просто