Расписание работы сайта

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

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

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

  1. {
  2.   "timetable": {...}
  3. }

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

Для того, что бы указание расписания работы сайта не казалось таким сложным, рекомендуем Вам ознакомиться с примерами.


Часовой пояс

Часовой пояс указывается в текущей секции с помощью ключа timezone, его значение должно соответствовать такому формату: SHH:MM, где:

S
знак плюс или минус, его может не быть, если HH и MM состоят из нулей;
HH
часы, от 00 до 13 (с ведущим нулем);
MM
минуты, от 00 до 59 (с ведущим нулем).

Ниже приведено примеры некоторых часовых поясов:

+03:00
часовой пояс, в котором располагается Москва;
-06:00
часовой пояс США и Канады;
 00:00
часовой пояс, в котором располагается Лондон.

Время работы сайта

Время работы сайта указывается в текущей секции с ключом works. Значением этого ключа является список записей, содержащих указание даты и времени работы сайта.

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

В примере ниже указано расписание работы сайта в рабочие дни:

  1. {
  2.   "works":
  3.   [
  4.     {
  5.       "begin": "09:00",
  6.       "end": "18:00",
  7.       "from": "mon",
  8.       "to": "fri"
  9.     }
  10.   ]
  11. }

Как видно из примера выше, в нем указана одна запись, которая сообщает о том, что сайт работает с понедельника по пятницу с 9 до 18.


Перерывы в работе сайта

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

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

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

В этом примере, указано время проведения технических работ на сайте.

  1. {
  2.   "breaks":
  3.   [
  4.     {
  5.       "begin": "09.11.2014 00:00",
  6.       "end": "10.11.2014 00:00",
  7.       "type": "tech"
  8.     }
  9.   ]
  10. }

Как видно из примера выше, в нем указана одна запись, которая сообщает о том, что на сайте запланированы технические работы на 09.11.2014. Работы начнутся в полночь, а закончить их планируется до начала следующего дня.


Структура записи указания даты и времени

Каждая запись представляет собой секцию, которая может содержать в себе информацию, указанную с помощью таких ключей:

begin
дата начала;
end
дата завершения;
from
начиная, с какого дня;
to
заканчивая, каким днем;
days
список конкретных дней.

Ни один из ключей не является обязательным но, наличие и отсутствие ключей зависит от их значений.

Ключи begin и end используются для указания времени или даты начала и конца соответственно, поэтому могут принимать любые значения но, только в формате даты. Если в них указана дата в формате времени то, обязательно необходимо указать календарную дату с помощью ключей from и to или ключа days. Если же значения в этих ключах указаны в формате календарной даты и времени то, никакие другие ключи указывать не требуется.

Формат указания дат в begin и end должен быть одинаковым.

Если ключи begin и end не указаны но, указаны from и to или days то, это означает, что в указанные дни у сайта свободный график работы.

Ключи from и to используются для указания интервала из дней, поэтому могут принимать значения только в формате календарной даты.

Следующий пример сообщает о начале работы сайта с 9 часов утра, а завершения его работы в 5 часов дня, с четверга по пятницу:

  1. {
  2.   "begin": "09:00",
  3.   "end": "17:00",
  4.   "from": "thu",
  5.   "to": "fri"
  6. }

Ключ days, в некоторой степени является противоположностью ключам from и to. Если последние используются для указания интервала из дней то, days используется для указания набора из отдельных дат. В качестве значения он принимает список, состоящий из дней в формате календарной даты.

Если переписать предыдущий пример с использованием ключа days вместо from и to то, он будет выглядеть так:

  1. {
  2.   "begin": "09:00",
  3.   "end": "17:00",
  4.   "days":
  5.   [
  6.     "thu",
  7.     "fri"
  8.   ]
  9. }

Формат дат

Дата обычно состоит из календарной даты и времени, поэтому ее формат имеет следующий вид DATE_TIME, где:

DATE
календарная дата;
TIME
время.

Как видно, дата состоит из двух частей разделенных пробелом. Если в дате присутствует только одна из частей то, пробел не указывается. Эти части в свою очередь также имеют собственные форматы, описание которых находится ниже по тексту в соответствующих подразделах.

Ниже приведено примеры даты, календарной даты, и времени:

03.07.2014 20:00
означает дату: 3 июля 2014 года и время 20 часов, 00 минут;
03.07.2014
означает дату: 3 июля 2014 года;
20:00
означает время: 20 часов, 00 минут.

Формат календарной даты

Предусмотрено несколько форматов указания календарной даты:

DAY
указывает на конкретный день текущей недели;
DD
указывает на конкретный день, текущего месяца и года;
DD.MM
указывает на конкретный день и месяц, текущего года;
DD.MM.YYYY
указывает на конкретный день, месяц и год.

Указанные в форматах обозначения могут принимать такие значения:

DAY
сокращенное название дня недели, а именно:
  • mon - понедельник
  • tue - вторник
  • wed - среда
  • thu - четверг
  • fri - пятница
  • sat - суббота
  • sun - воскресенье
DD
номер дня от 01 до 31 (с ведущим нулем);
MM
номер месяца от 01 до 12 (с ведущим нулем);
YYYY
четырехзначный номер года.

Ниже приведено примеры дат, в различных форматах:

wed
среда текущей недели;
05
5 число текущего месяца и года;
07.07
7 июля текущего года;
11.12.2014
11 декабря 2014 года.

Формат времени

Формат времени имеет следующий вид HH:MM, где:

HH
часы, от 00 до 23 (с ведущим нулем);
MM
минуты, от 00 до 59 (с ведущим нулем).

Как можно заметить, для указания времени суток используется 24 часовой формат.

Например:

09:00
9 часов утра;
18:30
6 часов, 30 минут вечера.

Примеры составления разных расписаний работы сайта

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


Расписание работы сайта в будние дни, со свободным графиком в выходные

  1. {
  2.   "timetable":
  3.   {
  4.     "timezone": "+03:00",
  5.     "works":
  6.     [
  7.       {
  8.         "begin": "09:00",
  9.         "end": "18:00",
  10.         "from": "mon",
  11.         "to": "fri"
  12.       },
  13.       {
  14.         "days":
  15.         [
  16.           "sat",
  17.           "sun"
  18.         ]
  19.       }
  20.     ]
  21.   }
  22. }

Как видно из примера выше, в нем указано две записи. В первой записи указано, что сайт работает с понедельника по пятницу с 9:00 до 18:00. А во второй записи указано, что в субботу и воскресенье сайт работает по свободному графику.

Стоит отметить, что указано московское время работы сайта.


Перерыв на обед

  1. {
  2.   "timetable":
  3.   {
  4.     "timezone": "+03:00",
  5.     "works":
  6.     [
  7.       {
  8.         "begin": "09:00",
  9.         "end": "18:00",
  10.         "from": "mon",
  11.         "to": "fri"
  12.       }
  13.     ],
  14.     "breaks":
  15.     [
  16.       {
  17.         "begin": "13:00",
  18.         "end": "14:00"
  19.         "from": "mon",
  20.         "to": "fri"
  21.       }
  22.     ]
  23.   }
  24. }

Как видно из примера выше, в нем указано, что сайт работает с понедельника по пятницу с 9:00 до 18:00, с перерывом на обед с часу до двух дня, по московскому времени.


Расписание работы сайта в новогодние праздники

  1. {
  2.   "timetable":
  3.   {
  4.     "timezone": "+03:00",
  5.     "works":
  6.     [
  7.       {
  8.         "begin": "09:00",
  9.         "end": "18:00",
  10.         "from": "mon",
  11.         "to": "fri"
  12.       },
  13.       {
  14.         "begin": "10:00",
  15.         "end": "16:00",
  16.         "days":
  17.         [
  18.           "sat",
  19.           "sun"
  20.         ]
  21.       },
  22.       {
  23.         "begin": "09:00",
  24.         "end": "15:00",
  25.         "days":
  26.         [
  27.           "31.12",
  28.           "06.01"
  29.         ]
  30.       }
  31.     ],
  32.     "breaks":
  33.     [
  34.       {
  35.         "begin": "01.01 00:00",
  36.         "end": "03.01 00:00"
  37.       },
  38.       {
  39.         "begin": "07.01 00:00",
  40.         "end": "09.01 00:00"
  41.       }
  42.     ]
  43.   }
  44. }

Как видно из примера выше, в нем указано, что сайт работает с понедельника по пятницу с 9:00 до 18:00, а выходные с 10:00 до 16:00. В предпраздничные дни, а это 31 декабря и 6 января, сайт работает с 9:00 до 15:00.

Сайт не будет работать 1, 2, 7 и 8 января. Время на сайте указано московское.