Загрузка нескольких фидов событий одним запросом календаря GData
Итак, моя проблема как таковая...
Я создаю простой модуль календаря для интранет-портала моей компании. Мы используем Календарь Google (Приложения для вашего домена), и я хотел бы дать сотрудникам возможность видеть все каналы, на которые они подписаны, в одном календаре - как в реальном Календаре Google!
Причина, по которой я не просто использую гаджет, который они предоставляют, заключается в том, что нам нужен просмотр на одну неделю. В настоящее время их гаджет предлагает только полные месячные и недельные просмотры. Итак, нам бы хотелось, чтобы недельный просмотр в основном выглядел как одна строка (неделя) из полного календаря. Мы сделали такой интерфейс, теперь нам просто нужно его заполнить.
Я могу заставить его работать с одним каналом. Черт, я могу даже заставить его работать со всеми фидами, на которые подписан пользователь. Проблема в том, что это sslllooowwwww. Из того, что я могу сказать, единственный способ получить все события из каждого канала, на который подписан человек, - это просмотреть их список каналов и сделать новый звонок в Google с запросом событий для каждого канала. Ну, естественно, если человек подписан, скажем, на 12 каналов... это займет много времени.
Одна из идей, которая может помочь в решении проблемы скорости, заключается в том, чтобы сохранять результаты в нашей базе данных и периодически обновлять их для каждого из наших 100 каналов. Но это, вероятно, замедлит работу наших серверов, потому что в основном они будут постоянно запрашивать Google из-за количества каналов и времени, которое требуется для извлечения каждого из них.
Вопрос: Есть ли способ запросить все события из списка каналов вместо того, чтобы запрашивать их по отдельности? Любая помощь будет принята с благодарностью.
Кстати, я использую PHP и автономную библиотеку Zend Gdata.
Заранее спасибо.
1 ответ
Я исследовал методы для этого и нашел интересный подход, который люди используют с Yahoo Pipes. Проверьте OUseful.info и bavatuesdays для деталей. Я не уверен, что это обязательно решит вашу проблему со скоростью.
Если бы я делал это в Java, я бы использовал исполнителя для одновременной обработки всех запросов пользователей.
Возможно, есть что-то, что вы можете сделать, используя ETag и кеширование? В этом разделе Руководства разработчика API Календаря Google показан атрибут etag, возвращаемый для каждой записи в списке календарей пользователя. Это значение можно использовать для кэширования календаря. Всякий раз, когда изменяется этаг для конкретного календаря, календарь должен обновляться новым запросом. Это может сэкономить вам немного пропускной способности. Надеемся, что Zend GData API предоставляет эти элементы клиентскому коду.