Загрузка нескольких фидов событий одним запросом календаря GData - PullRequest
2 голосов
/ 16 апреля 2009

Итак, моя проблема как таковая ...

Я создаю простой модуль календаря для интранет-портала моей компании. Мы используем Календарь Google (Приложения для вашего домена), и я хотел бы дать сотрудникам возможность видеть все каналы, на которые они подписаны, в одном календаре - как в реальном Календаре Google!

Причина, по которой я не просто использую гаджет, который они предоставляют, заключается в том, что нам нужен просмотр на одну неделю. В настоящее время их гаджет предлагает только полные месячные и недельные просмотры. Итак, нам бы хотелось, чтобы недельный просмотр в основном выглядел как одна строка (неделя) из полного календаря. Мы создали такой интерфейс, теперь нам просто нужно его заполнить.

Я могу заставить его работать с одним каналом. Черт возьми, я могу даже заставить его работать со всеми каналами, на которые подписан пользователь. Проблема в том, что это sslllooowwwww . Из того, что я могу сказать, единственный способ получить все события из каждого канала, на который подписан человек, - это просмотреть свой список каналов и сделать новый звонок в Google с запросом событий для каждого канала . Ну, естественно, если человек подписан, скажем, на 12 каналов ... это займет много времени.

Одна из идей, которая может помочь в решении проблемы скорости, заключается в том, чтобы сохранить результаты в нашей базе данных и периодически обновлять их для каждого из наших 100 каналов. Но это, вероятно, замедлит работу наших серверов, потому что в основном он будет постоянно запрашивать Google из-за количества каналов и времени, которое требуется для извлечения каждого из них.

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

Кстати, я использую PHP и автономную библиотеку Zend Gdata.

Заранее спасибо.

1 Ответ

1 голос
/ 17 апреля 2009

Я исследовал методы для этого и нашел интересный подход, который люди используют с Yahoo Pipes . Проверьте OUseful.info и bavatuesdays для деталей. Я не уверен, что это обязательно решит вашу проблему со скоростью.

Если бы я делал это на Java, я бы использовал исполнителя для одновременной обработки всех запросов пользователей.

Возможно, есть что-то, что вы можете сделать, используя ETag и кеширование? В этом разделе из Руководства разработчика API Календаря Google он показывает атрибут etag, возвращаемый для каждой записи в списке календарей пользователя. Это значение можно использовать для кэширования календаря. Всякий раз, когда изменяется этаг для определенного календаря, календарь должен обновляться новым запросом. Это может сэкономить вам немного пропускной способности. Надеемся, что Zend GData API предоставляет эти элементы клиентскому коду.

...