За последние 24 часа нас посетили 17673 программиста и 1655 роботов. Сейчас ищут 897 программистов ...

альтернатива exec()

Тема в разделе "Прочие вопросы по PHP", создана пользователем gelius, 15 июл 2014.

  1. gelius

    gelius Активный пользователь

    С нами с:
    17 окт 2013
    Сообщения:
    29
    Симпатии:
    0
    Вот подумалось, что неплохо бы держать все что я запускаю при помощи exec() на удаленной машине. Разумеется с exec() так не выйдет. Как подойти к решению такой задачи? Нужно чтобы при запуске php скрипта запускалась сторонняя программа на удаленном сервере.
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Тоесть на удалённом? Каким образом подключиться хочешь?
     
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Через промежуточный скрипт на удалённой машине, который будет делать тот же exec. А чтоб через это дело не ломанули, поставить ограничение на запуск скрипта по IP первого сервера
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Дергай скрипт с помощью file_get_contents или cURL

    Добавлено спустя 1 минуту 23 секунды:
    Код (Text):
    1. file_get_contents("http://...
     
  5. gelius

    gelius Активный пользователь

    С нами с:
    17 окт 2013
    Сообщения:
    29
    Симпатии:
    0
    Апну тему.
    exec( "/usr/bin/python /home/test.py '$param1' '$param2' >/dev/null 2>&1 &" );
    Таким образом я передавал значения '$param1' и '$param2' в test.py.
    Какие варианты реализовать это, если test.py на удаленной машине?
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    Давай еще я спрошу: юный хакер, что для тебя значит "на удаленной машине"? Ты к ней как коннектишся: ssh, smb, http?
    Если только "через веб", то буквально exec() ты не сделаешь.
             — ваш К.О.

    На удаленной машине должен быть [ твой ] веб-скрипт, который ты сможешь вызвать просто открыв нужный адрес — например через
    Код (PHP):
    1. file_get_contents("http://anotherhost.ru/.....?param1={$p}&param2={$p2}....');
     
  7. gelius

    gelius Активный пользователь

    С нами с:
    17 окт 2013
    Сообщения:
    29
    Симпатии:
    0
    К сожалению file_get_contents не подходит. Останавливается выполнение основного скрипта.
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    "клиент" ждет когда ему ответит "сервер", а тот ждет когда выполнится exec().

    в ссылке igordata описано как выполнить exec() не ожидая результата выполнения.
    то есть как не тормозить "сервер".

    а можно не тормозить "клиента":
    http://stackoverflow.com/questions/4191294/php-request-url- ... r-response
    http://stackoverflow.com/questions/124462/asynchronous-php-calls?lq=1