1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Обновление чего либо средствами PHP

Тема в разделе "PHP", создана пользователем D_Jackas, 23 ноя 2013.

  1. TopicStarter Overlay
    D_Jackas

    D_Jackas А теперь ПиЗдыК O_o Команда форума

    Регистрация:
    11.01.12
    Сообщения:
    388
    Симпатии:
    176
    Баллы:
    575
    Пол:
    Мужской
    ICQ:
    611308
    Skype:
    lebedevif
    Всем доброго времени суток. Сегодня я решил проверить смогу ли я налету придумать и написать скрипт обновления. Не так давно задался вопросом как сделать полуавтоматическое обновление JimBot'a или чего либо прочего. Посидев подумав какие этапы должен проходить скрипт и понял что скрипт должен:
    1) Принять запрос об проверке версии бота
    2) Сверить версию нашего бота с версией бота на удаленном сервере
    3) Если есть версия новее предложить обновиться, иначе "Установлена последняя версия"
    4) Скачать новую версию
    5) Убить процесс бота (Иначе мы не сможем заменить обновляемые файлы)
    6) Распаковать скаченное обновление
    7) Запуститься обратно.
    И так.. Мы имеем 7 этапов, которые должен выполнить наш скрипт. Приступим!
    Для начала мы должны подумать, как мы будем принимать запрос и сверять версию сайта. Напишем маленькую форму, которая будет отправлять запрос методом "POST". т.к. мы хотим чтоб у нас было как можно меньше файлом мы уместим все в 2 файла: config.php и index.php
    Запрос формы:
    PHP:
    <?
    if (
    $_POST[submit]) {
    //а тут мы уместим наш код
    }
    ?>
    <form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <center><input type="submit" name="Submit" value="бла бла бла"></center>
    </form> 
    Теперь разберемся с тем как же сверить версии. С этим нам поможет оператор if();
    PHP:
    if(наша_версия >= Версия_на_сервере); {

    echo 
    'Стоит последняя версия';
    }
    else {
    //Выполняем скрипт обновления
    }

    Теперь возникает вопрос как нам заставить предложить обновиться если версии разные. Рещим эту проблему наитупейшим способом. Вставим ту же форму еще раз. Т.е. в саму же себя
    PHP:
    <?
    if (
    $_POST[submit]) {


    if (
    $_POST[update]) {

    }


    echo 
    "<form name=\"form\" method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">
    <center><input type=\"submit\" name=\"update\" value=\"Обновить\"></center>
    </form> "
    ;

    }
    ?>

    <form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <center><input type="submit" name="submit" value="Проверяем"></center>
    </form>
    Ладно с проверкой решили проблему. Теперь переходим к скачиванию новой версии. Эту проблему мы решим таким образом: Откроем архив на Х-сервере "прочитаем" содержимое и "Запишем" его к нам в папку со скриптом. Т.е. будет выглядить примерно так:
    PHP:
    if (!empty($dwnl)) //где $dwnl ссылка на файл с новой версией
    {
    $file basename($dwnl);
    if (
    file_get_contents($dwnl))
      {
      
    $content file_get_contents($dwnl);
      
    $f fopen"$file""w" );
      if (
    fwrite$f$content ) === FALSE)
      {
      echo 
    "Не могу произвести запись в файл.";
      exit;
      }else echo 
    "Ура! Файл <font color='red'>" .$file ."</font> записан.";
      
    fclose$f );
      }else echo 
    "Ошибка! Файл не найден!";
    }
    Ура. Архив скачали. Теперь идем бухать чаем или кофе чтобы освежить мозги и отдохнуть..... Все отдохнули хватит! Теперь у нас задача убить процесс, мы же решились писать обнову именно под JimBot. Но я расписывать что да как не буду лучше пожуем мою предыдущую темку и подумаем что куда вставить. А для тех кто мало понимает, то нужно вставить скрипт убивающий процесс перед распаковкой архива, ибо мы не сможем полноценно распаковать архив т.к. наш файл *.jar может использоваться. Так же для увнренного завершения не помешало б сразу после "убийства" процесса подождпть "покурить" секунды так 3-5:
    PHP:
    sleep(время_в_секундах);
    Ну а теперь к самой распаковке архива. Это делается вот так
    PHP:
    $zip = new ZipArchive;

    $zip->open('имя_скаченного_файла.zip');
    $zip->extractTo('./');
    $zip->close();
    echo 
    "Распакован!!"
    Ну и на последок запускаем обратно наш бот. Снова берем с этой темы
    Ну вот и все ребята. Остается теперь только проверить наш скрипт и все! Я вложил свои исходники, кто проверит прошу отписаться! Единственное я не написал дамп в базу, но его вы уже напишите сами либо придется подождать до завтра т.к. я сегодня устал

    ------------------------------------------------------
    И еще мелкий пиар. Я создал хостигг картинок. Кому интнресно можете посмотреть http://imahost.ru (большая часть кода хостинга не моя)

    Вложения:

    • update.zip
      Размер файла:
      2,3 КБ
      Просмотров:
      0
    Последнее редактирование: 23 ноя 2013
    Xpert™, Nerdo, Васяра и ещё 1-му нравится это.

Поделиться этой страницей