Автоматизирование процесса

Discussion in 'PHP' started by Tw!m4, 4 Mar 2012.

  1. Tw!m4

    Tw!m4 Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    187
    Likes Received:
    19
    Reputations:
    0
    Здрасте!

    Кароче, такая ситуация:

    1) У фирмы много филиалов, где стоят отдельные серваки (35 штук таких). На серваках бегает продукт BackupExec, который делает резервное копироваие всяких там, супер-пупер важных файлов.

    2) После каждого бэкапа BackupExec отправляет мыло со статусом, как прошла работа (удачно или нет).

    3) С Понедельника по Пятницу все бэкапы (дифференциальные) начанаются с 20-и часов, за исключением некоторых, они начинают свою работу в ночь (тобишь в час или два ночи), которые так и должны быть запротоколированы. В субботу и в восскресение проходят полные резервные копии.

    Пример: Во вторник я прихожу утром на работу и начинаю проверят все мыла с бакапами. Те, которые начали свою работу до 23:59 протоколируются на понедельник, все остальные на вторник.

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

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

    С помощью imap_open вытягиваю только с сегоднешного и вчерашнего дня с хидеров все необходимые данные (Maildate, Subject (тут стоит статус работы), fromaddress etc..)

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

    Например:

    Code:
        ................Понедельник................Вторник
        ................5.3.2012...................6.3.2012
        сервер1........удачно.....................удачно
        сервер2........неудачно..................удачно
        сервер3........удачно.....................удачно
        и. тд................и тд................и тд
    Помогите как тут грамматно решить задачу.
     
  2. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,061
    Likes Received:
    1,067
    Reputations:
    80
    Предлагаю след. структуру:
    • Таблица с днями недели(статичная):
      1. id дня
      2. name дня
    • Таблица с названиями серверов:
      1. id сервера
      2. name сервера
    • Непосредственно таблица с текущим положением:
      1. id записи
      2. дата
      3. id дня из таблицы с днями неделями
      4. id сервера из таблицы с серверами
      5. статус операции

    В качестве парсера, что-то на подобие этого:
    PHP:
    <?php

    $Data 
    explode("\n"file_get_contents('1.txt'));

    //даты
    preg_match_all('#\.+(\d+\.\d+\.\d+)#'$Data['1'], $Dates);
    $Dates $Dates['1'];

    $ServerName = array();
    $ServerStatuses = array();
    for(
    $i 3$c count($Data); $i $c$i++)
    {
        
    //имя сервера
        
    preg_match('#^(.*?)\.#'$Data[$i], $ServerName);
        
    $ServerName $ServerName['1'];
        
        
    //статусы
        
    preg_match_all('#\.+(удачно|неудачно)#'$Data[$i], $ServerStatuses);
        
    $ServerStatuses $ServerStatuses['1'];    
    }
    Индексы соответствуют номерам дней недели - 1.
     
    1 person likes this.
  3. Tw!m4

    Tw!m4 Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    187
    Likes Received:
    19
    Reputations:
    0
    Благодарю за идейку, звучит отлично!

    А вот как мне в 3-ем пункте третий и четвертый подпункт сделать? создать поле с лэйблом weekday и вписать туда просто id недельного дня из таблицы таблицы "дни недели"? или это как то по другому делается?
     
  4. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,061
    Likes Received:
    1,067
    Reputations:
    80
    Насчет дня недели, я считаю будет достаточно одного ассоциативного массива, где ключ день недели, а id соотв. его номер.
    А насчет списка, то скорее всего придется делать линкованный запрос на получения id, по названию сервера, при добавлении в осн. таблицу.
     
  5. Tw!m4

    Tw!m4 Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    187
    Likes Received:
    19
    Reputations:
    0
    идею понял, благодарю! теперь надо сделать правельный запрос в бд, чтоб мне инфа показалась.
    В общем сделал так как мы тут обсудили.

    есть 4 таблицы:
    Code:
    lands, states, servers и data
    lands, states, servers = статичные таблицы
    data = сюда записываются все данные

    1) lands
    .)id
    .)land name

    2) states
    .)id
    .)land_id
    .)state name

    3) servers
    .)id
    .)state_id
    .)server

    вот тут у меня вопрос:

    хочу вывести данные с таблицы servers где state является допустим "москва". Как мне тут такой селект с сабселектом сделать?
     
  6. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,061
    Likes Received:
    1,067
    Reputations:
    80
    Code:
    SELECT lands.land_name
    FROM states
    INNER JOIN Lands ON states.land_id = lands.id
    WHERE states.id =2
    LIMIT 0 , 1
    Что-то такое выведет имя страны, по id из state'a

    А вот это по Москве:
    Code:
    SELECT servers.server
    FROM servers
    INNER JOIN states ON servers.state_id = states.id
    INNER JOIN lands ON states.land_id = lands.id
    WHERE lands.land_name = 'Москва'
    LIMIT 0 , 1
    Вот неплохое описание использования JOIN.
     
    #6 Chaak, 9 Mar 2012
    Last edited: 9 Mar 2012
Loading...