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

РЕШЕНИЕ PHP Стоп и Старт JimBot

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

  1. TopicStarter Overlay
    D_Jackas

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

    Регистрация:
    11.01.12
    Сообщения:
    388
    Симпатии:
    176
    Баллы:
    575
    Пол:
    Мужской
    ICQ:
    611308
    Skype:
    lebedevif
    Все доброй ночи! Сегодня по просьбе друга взялся думать как же запустить и остановить JimBot средствами PHP. Думал рассуждал и пришел к выводу что нужно всего лишь отправить запросы в консоль, которые выполняет функция
    PHP:
    system();
    Но это нам пойдет только для старта т.к. для команды стоп нужно убить процесс, а для его ликвидации нужно узнать PID нашего процесса . Для того чтобы узнать PID нашего процесса воспользуемся функцией
    PHP:
    fopen();
    и полученный PID присвоим к какой-либо переменной, например:
    PHP:
    $stop fopen("Тут_путь_до_файла_записывающий_PID""r"); 
    К сожалению узнать мы PID сможем пока, только на UNIX системах т.к. я не вкусе как записать PID в WIN. Кто знает поделитесь я подредактирую код. Далее после того как мы присвоили к переменной наш PID нам необходимо будет создать файл файл, который убьет процесс. Создавать будет той же функцией, что и считывали наш PID.
    PHP:
    $stop fopen("Тут_путь_до_файла_убивающий_процесс""w");
      
    $str "kill ".$PID.""//Где $PID наш PID процесса
      
    if ( !$file )
      {
        echo(
    "Ошибка записи в файл");
      }
      else
      {
        
    fputs $file$str);
      }
      
    fclose ($file);
    Для незнающих или тех кто не заметил, подмечу что у каждой из функций 2 разных атрибута
    r - только чтение
    w - Запись в файл, если файла нет, создать.
    После создания нашего файла убивающий процесс запускаем ту же функцию что и при запуске. Теперь мой пример моего кода:
    index.php (В нем хранится форма, отправляющая имя нажатой кнопки)
    PHP:
    <?php
    //Узнаем запускать бот или нет
    echo "<form action=\"zap.php\" method=\"post\">
    <input type=\"submit\" name=\"stop\" value=\"Стоп\">
    <input type=\"submit\" name=\"start\" value=\"Старт\">
    </form>"
    ;
    ?>
    zap.php (В этом файле наши команды, так же требуется заполнить информацию в начале файла: путь, имя файлов)
    PHP:
    <?php
    $put 
    'Полный_путь_до_бота';        //Пишем полный путь до папки с ботом c / в конце. ВНИМАНИЕ! Если ОС WIN, то \\
    $start 'Файл_старт';              //Имя файла который запускает бот, грубо говоря start.sh
    $stop 'Файл_стоп';                //Файл который останавливает бот, грубо говоря stop.sh
    $spid 'Имя_файл_с_PID';           //Имя файл в, который записан PID процесса ВНИМАНИЕ!! Файл должен храниться в корне бота
    $os 'Ваша_OС';                    //Пишем вашу ОС. win либо lin

    if($os == win) {
    $OS "start";}

    if (@
    $_REQUEST['start']) {
    system(''.$OS.' '.$put.''.$start.'');
    echo 
    "Запущен!";
    }
    if (@
    $_REQUEST['stop']) {
    $pid fopen("".$put."".$spid."","r");
      if(!
    file)
        {
          echo(
    "Ошибка! Не смог узнать PID!!!");
        }
    $file fopen ("".$put."".$stop."","w");
      
    $str "kill ".$pid."";
      if ( !
    $file )
      {
        echo(
    "Ошибка открытия файла");
      }
      else
      {
        
    fputs $file$str);
      }
      
    fclose ($file);
    system(''.$OS.' '.$put.''.$stop.'');
    echo 
    "Остановлен";
    }
    ?>
    На UNIX системах не проверял, кто проверит отпишитесь!
    НА ЗАМЕТКУ: оба файла должны лежать в корне бота

    Если есть замечания, вопросы или нашли ошибку пишите поправлю!

    Вложения:

    • start_stop.zip
      Размер файла:
      932 байт
      Просмотров:
      6
    Xpert™, Nerdo, дмитрий198 и 3 другим нравится это.
  2. TopicStarter Overlay
    D_Jackas

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

    Регистрация:
    11.01.12
    Сообщения:
    388
    Симпатии:
    176
    Баллы:
    575
    Пол:
    Мужской
    ICQ:
    611308
    Skype:
    lebedevif
    Решил проблему с ОС WIN. Решил проблему ликвидации процесса по имени запущенной консольки.. Теперь файл zap.php выглядит так:
    PHP:
    <?php
    $put 
    'Полный_путь_до_бота';        //Пишем полный путь до папки с ботом c / в конце. ВНИМАНИЕ! Если ОС WIN, то \\
    $start 'Файл_старт';              //Имя файла который запускает бот, грубо говоря start.sh
    $stop 'Файл_стоп';                //Файл который останавливает бот, грубо говоря stop.sh
    $spid 'Имя_файл_с_PID';          //Имя файл в, который записан PID процесса ВНИМАНИЕ!! Файл должен храниться в корне бота
    $os 'Ваша_OС';                    //Пишем вашу ОС. win либо lin

    $pid fopen("".$put."".$spid."","r");

    if(
    $os == win) {
    $OS "start";
    $kill "tskill";
    $PrID $start;}
    else {
    $kill "kill";
    $PrID $pid;}

    if (@
    $_REQUEST['start']) {
    system(''.$OS.' '.$put.''.$start.'');
    echo 
    "Запущен!";
    }
    if (@
    $_REQUEST['stop']) {

      if(!
    file)
        {
          echo(
    "Ошибка! Не смог узнать PID!!!");
        }
    $file fopen ("".$put."".$stop."","w");
      
    $str "".$kill." ".$PrID."";
      if ( !
    $file )
      {
        echo(
    "Ошибка открытия файла для записи");
      }
      else
      {
        
    fputs $file$str);
      }
      
    fclose ($file);
    system(''.$OS.' '.$put.''.$stop.'');
    echo 
    "Остановлен";
    }
    ?>
    Так же прикрепил сам исходник. Жду ваших предложений и замечаний. Кто проверит прошу отписаться! И так же до кучи выложу php скрипт Эмулятора консоли

    Вложения:

    • Start_Stop_2.zip
      Размер файла:
      976 байт
      Просмотров:
      4
    • console.zip
      Размер файла:
      29,8 КБ
      Просмотров:
      1
    Последнее редактирование: 23 ноя 2013
    alex_xpert, forZone и cerber нравится это.
  3. forZone

    forZone Модератор Команда форума

    Регистрация:
    21.01.13
    Сообщения:
    629
    Симпатии:
    108
    Баллы:
    375
    Пол:
    Мужской
    ICQ:
    8883575
    Parse error: syntax error, unexpected T_STRING in ...zap.php on line 3
    $put = 'C:\jb\'; //Пишем полный путь до папки с ботом c / в конце. ВНИМАНИЕ! Если ОС WIN, то \\
    $start = 'start.bat'; //Имя файла который запускает бот, грубо говоря start.sh
    $stop = 'stop.bat'; //Файл который останавливает бот, грубо говоря stop.sh
    $spid = 'state'; //Имя файл в, который записан PID процесса ВНИМАНИЕ!! Файл должен храниться в корне бота
    $os = 'win'; //Пишем вашу ОС. win либо lin

    правильно?
  4. cerber

    cerber Местный инквизитор Команда форума

    Регистрация:
    25.02.11
    Сообщения:
    10.324
    Симпатии:
    2.788
    Баллы:
    575
    Пол:
    Мужской
    Адрес:
    АДА
    $put = 'C:\\jb\\';

    вот тут не верно,дабы pid это номер запущенного процесса,файл,который создаётся скриптом запуска,подробнее
    white-wolf нравится это.
  5. forZone

    forZone Модератор Команда форума

    Регистрация:
    21.01.13
    Сообщения:
    629
    Симпатии:
    108
    Баллы:
    375
    Пол:
    Мужской
    ICQ:
    8883575
    Работает=)
  6. TopicStarter Overlay
    D_Jackas

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

    Регистрация:
    11.01.12
    Сообщения:
    388
    Симпатии:
    176
    Баллы:
    575
    Пол:
    Мужской
    ICQ:
    611308
    Skype:
    lebedevif
    Для WIN это не пойдет. Для этой ОС я нашел только выход удалнния процесса по его имени. Т.е. по именсамого bat или cmd файла
  7. rv3yaa

    rv3yaa Пользователь

    Регистрация:
    02.08.11
    Сообщения:
    157
    Симпатии:
    28
    Баллы:
    25
    Пол:
    Мужской
    Можно сделать по средствам ssh2 библиотек , запускает и останавливает
    на такой технологии делается админки для кс
    но переделать не составит труда
    можно получить полноценную панель
    с командами
    все под Linux только что. для Windows надо шагать в сторону ActivePerl
    и делать скрипт со связкой с web сервером и php
  8. Васяра

    Васяра VIP пользователь Команда форума

    Регистрация:
    18.08.11
    Сообщения:
    816
    Симпатии:
    363
    Баллы:
    575
    Пол:
    Мужской
    Род занятий:
    грузоперевозки
    Адрес:
    г.Тюмень
    ICQ:
    708953
    ну и сделай!что мешает?будем рады наработке, воспользуемся!
    cerber нравится это.
  9. rv3yaa

    rv3yaa Пользователь

    Регистрация:
    02.08.11
    Сообщения:
    157
    Симпатии:
    28
    Баллы:
    25
    Пол:
    Мужской
    :) как будет свободный часик то сделаю
  10. TopicStarter Overlay
    D_Jackas

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

    Регистрация:
    11.01.12
    Сообщения:
    388
    Симпатии:
    176
    Баллы:
    575
    Пол:
    Мужской
    ICQ:
    611308
    Skype:
    lebedevif
    Легче тогда вообще эмулятор терминала написать и не трахать себе мозги =) Кому интересно могу позже написать поделиться
  11. rv3yaa

    rv3yaa Пользователь

    Регистрация:
    02.08.11
    Сообщения:
    157
    Симпатии:
    28
    Баллы:
    25
    Пол:
    Мужской
    Можно и так сделать:)
  12. TopicStarter Overlay
    D_Jackas

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

    Регистрация:
    11.01.12
    Сообщения:
    388
    Симпатии:
    176
    Баллы:
    575
    Пол:
    Мужской
    ICQ:
    611308
    Skype:
    lebedevif
    Персонально. Как то уже использовал этот скрипт. Сразу говорю написан не мной=)

    Вложения:

    • console.zip
      Размер файла:
      29,8 КБ
      Просмотров:
      3

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