Какой идеальный способ реализовать эту функцию PHP / XML на веб-сайте? - PullRequest
3 голосов
/ 01 июня 2009

У меня есть этот код, написанный для того, чтобы получить некоторые данные о погоде и сделать их доступными на моем веб-сайте:

if( ! $xml = simplexml_load_file('http://www.weather.gov/data/current_obs/KBED.xml') ) 
{ 
    echo 'unable to load XML file'; 
} 
else 
{ 
  $temp = $xml->temp_f.' Degrees';
  $wind = $xml->wind_mph;
  $wind_dir = $xml->wind_dir;
  $gust = $xml->wind_gust_mph;
  $time = $xml->observation_time;
  $pres = $xml->pressure_in;
  $weath = $xml->weather;
}

А потом я просто повторяю их внутри тегов, я хочу, чтобы они были внутри. Мой сайт имеет низкий трафик, но мне интересно, что «лучший» способ сделать что-то подобное, если бы я увеличил трафик. Должен ли я каждый час записывать эти переменные в базу данных (при обновлении XML) с заданием cron, чтобы каждый раз сохранять пинг сервера, или это не плохая практика? Я понимаю, что это немного субъективно, но мне некого больше просить о «лучших путях». Спасибо !!

Ответы [ 3 ]

2 голосов
/ 01 июня 2009

Я бы предложил следующее:

  • Когда вы впервые получаете содержимое xml, анализируете его и сериализуете в файл с временной меткой, прикрепленной к файлу каким-либо образом (возможно, как часть сериализованной структуры данных)

  • Каждый раз, когда страница загружается, захватывайте эти сериализованные данные и проверяйте метку времени. Если он прошел определенную точку, иди и снова возьми xml и кешируй его, обязательно обновив метку времени. Если нет, просто используйте эти данные.

Это должно сработать, это означает, что вам нужно лишь иногда получать xml, а также, когда срок действия кэша истек, у вас нет лишних затрат на его регулярное посещение, даже если никто не посещает (так как обновляется только по запросу).

1 голос
/ 01 июня 2009
  • Настройка задания cron для периодической загрузки XML-документа, его анализа и сохранения переменных в базе данных.
  • Когда запрашивается страница, извлеките переменные из базы данных и отобразите вашу страницу.
  • Хорошей идеей будет также сохранить временную метку последнего обновления в базе данных, чтобы вы могли определить, когда данные устарели (потому что веб-сайт о погоде не работает).

Эта настройка выглядит очень разумной для меня.

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

Вы можете кешировать выходные данные внешнего сайта и разрешать ему обновляться каждые 5-10 секунд. Это убило бы влияние большого количества «пингов» с вашего сайта. Это действительно зависит от того, насколько важна точность синхронизации для вашего клиента / клиента.

В ситуации высокого трафика у меня был бы отдельный скрипт, который запускает задание демона или cron и извлекает погоду через каждый указанный интервал, а по завершении перезаписывает страницу общедоступного веб-сайта. Таким образом, вам не нужно беспокоиться о кэшировании, так как это выполняется фоновой задачей, ваши посетители просто получают доступ к статической странице с веб-сервера. Это также позволяет избежать или, по крайней мере, минимизировать необходимость включения базы данных в уравнение и является довольно легким.

С другой стороны, это создает вторую точку отказа и может быть довольно бесполезным, если информация должна быть точной ко времени доступа к странице.

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