Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Как продумать условие if / else?
phpain  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 5
Пользователь №: 42257
На форуме: 11 месяцев, 22 дня
Карма:




Здравствуйте.

Есть .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 )
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Dezigo  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Indiana Jones
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1001
Пользователь №: 5429
На форуме: 8 лет, 5 месяцев, 14 дней
Карма: 45




Условие времени можно элементарно записать
через in_array() или range().

Вы сами описали Вашу логику, если Вам нужно что бы так и работало , то замечательно. smile.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
casper - gg  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Пользователь
Сообщений: 216
Пользователь №: 42190
На форуме: 1 год, 3 дня
Карма: 10




Цитата (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 можно переписать по красивее.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kristall  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



418 I'm a teapot
******

Профиль
Журнал
Группа: Форумчанин
Завсегдатай форума
Сообщений: 647
Пользователь №: 28374
На форуме: 5 лет, 5 месяцев, 23 дня
Карма: 22




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


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

root@server# make love && war
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса