Как создать канал iCal ics в PHP - PullRequest
2 голосов
/ 12 июля 2011

Я ищу особенности создания канала iCal для использования в таких приложениях, как Календарь Google и на телефонах других пользователей.

В настоящее время у меня есть сценарий, использующий класс iCalendar , который приURL-адрес посещается, файл ics создается и отправляется в браузер:

  function returnCalendar() {
    $filename = $this->getConfig( 'filename' );
    $output   = $this->createCalendar();
    $filesize = strlen( $output );
    if( 'xcal' == $this->format )
      header( 'Content-Type: application/calendar+xml; charset=utf-8' );
    else
      header( 'Content-Type: text/calendar; charset=utf-8' );
    header( 'Content-Length: '.$filesize );
    header( 'Content-Disposition: attachment; filename="'.$filename.'"' );
    header( 'Cache-Control: max-age=10' );
    echo $output;
    die();
  }

Я хотел бы (как я упоминал ранее) создать фид (уникальный URL-адрес для пользователя), и мне было интереснотехнические особенности этого?Я думал, что мне понадобится cronjob, чтобы просто сгенерировать каландар для всех, а затем связать пользователей с этим фидом, однако это кажется очень неэффективным, если, скажем, фид использует только один пользователь.

Можно ли установитьскрипт запускается только тогда, когда кто-то запросил каландар, а затем отправил ему соответствующий обратно?

Кто-нибудь знает, как часто Google Calandar и т. Д. Обновляется, как он работает и как я могу его протестировать?

Большое спасибо за ваше время,

Ответы [ 2 ]

2 голосов
/ 12 июля 2011

Нет необходимости создавать cronjob

Если вы создаете скрипт, который берет user_id и некоторые auth_key и после извлечения всех деталей и разбора их в ленте, он может работать так же

Cronjob - опция, если этот тип сценариев будет интенсивно использовать сервер Затем с помощью Cronjob создайте кеш и общедоступный сценарий для развертывания кэшированных данных для пользователей feed-reader

Я думаю, что большинство каналов создаются по запросу, а не предварительно созданы для кэширования результатов

Вы можете использовать эту библиотеку для простого создания канала
http://ajaxray.com/blog/php-universal-feed-generator-supports-rss-10-rss-20-and-atom

Примечание 1: Не забывайте, что соединение чаще всего инициируется со стороны пользователя на сторону сервера! Поэтому чаще всего сервер не уведомляет вас, а вы запрашиваете у сервера уведомление

1 голос
/ 13 июля 2011

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

Использованиеcronjob для генерации данных будет очень тяжело использовать процессор!

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