[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как продумать условие if / else?
phpain
Здравствуйте.

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

1. Торги идут с 17:30 до 00:00.
Всего делаю 5 запросов, по 1 запросу каждый час.
2. Во время запроса проверяю наличие данного файла X (файл на моем сервере).
3. Если данного файла нет - создаю его. Если есть - перезаписываю только в том случае, если содержимое файла X не совпадает с содержимым файла Y (который находится на стороннем сервере).
4. Затем вывожу содержимое файла X.
4. Если время не 17:30 - 00:00, то вывожу данные X.

— Логика верна?

Примерно так должно выглядеть условие:


if (такое-то время) {
if (проверяю наличие файла X) {
if (содержимое файла X == содержимое файла Y) {
вывожу содержимое файла X
} else {
перезаписываю содержимым файла Y
вывожу содержимое файла X
}
}
else {
создаю файл
вывожу содержимое файла X
}
}
else {
вывожу файл X
}


И по поводу времени. В промежуток времени 17:30 - 00:00 нужно сделать максимум 5 запросов. Поэтому хочу разделить время:
if ($hour == 18 or $hour == 19 or $hour == 20 or $hour == 21 or $hour == 22 or $hour == 23 or $hour == 00 )
Dezigo
Условие времени можно элементарно записать
через in_array() или range().

Вы сами описали Вашу логику, если Вам нужно что бы так и работало , то замечательно. smile.gif
casper - gg
Цитата (phpain @ 31.03.2016 - 12:02)
3. Если данного файла нет - создаю его. Если есть - перезаписываю только в том случае, если содержимое файла X не совпадает с содержимым файла Y (который находится на стороннем сервере).

в этом месте подвох какой-то есть чую. Вот же ограничения:
Цитата (phpain @ 31.03.2016 - 12:02)
Обращаться к этому файлу можно только 50 раз в день, вследствие чего было принято решение кэшировать данные.

откуда грузится содержимое файла Y, если из кэша, то сверка собственно с кэшем будет происходит. Который, как понял из поста, должен каждый час переписываться, но не более 5 раз за сутки за период времени с 17.30 по 00.00. По простым расчетам количество перезаписей должно быть 7-8 раз или временной интервал нужно менять.

По мне,проще сделать счетчик скачиваний файла и по нему ориентир держать или по дате создания файла на своем серваке, тогда и if | else можно переписать по красивее.
kristall
Можно попробовать сначала дёрнуть get_headers() или curl c CURLOPT_HEADER/CURLOPT_NOBODY, сравнить Last-Modified и Content-Length со старыми значениями, и, если не совпало, тянуть файл.

_____________
echo '<pre>',print_r($var, 1);die;

root@server# make love && war
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.