Как работать с Human Emulator во многопотоке. Запуск из bat-файла.

Мы уже начали рассказывать Вам о том как работать с Human Emulator во многопоточном режиме.
В этой статье мы расскажем как запускать несколько копий Хумана из bat-файла.

Для начала: bat-файлы или точнее пакетные или batch файлы это обычные текстовые файлы,
содержащие наборы команд интерпретатора и имеющие расширение bat.
Редактировать такие файлы можно при помощи блокнота или любого другого текстового редактора.
Детальнее про них можно посмотреть на википедии,
а так же тут.

В нашем случае нас интересует запуск программ из bat-файла. Для этого используется команда start и для запуска Human Emulator
эта команда будет выглядеть следующим образом:

start «XWeb Human Emulator» «C:\Xweb MT\Human Emulator\XWeb Human Emulator.exe» /port:»7010″ /script:“D:\scripts\script7010.php”

где:

«XWeb Human Emulator» — заголовок, выводимый в области заголовка окна.

«C:\Xweb MT\Human Emulator\XWeb Human Emulator.exe» /port:»7010″ /script:“D:\scripts\script7010.php”
— путь для запуска exe-ника с параметрами командной строки. Это /port:»7010″ порт, на котором запускать программу и
/script:“D:\scripts\script7010.php” скрипт, который надо запускать при старте Human Emulator.

Теперь запишем bat-файл для запуска 5 копий хуман эмулятора. Этот файл будет выглядеть следующим образом:

start «XHE» «C:\XWeb MT\Human Emulator 7011\XWeb Human Emulator MT.exe» /port:»7011″ /script:»C:\XWeb MT\Human Emulator 7011\My Scripts\proxy\check_proxy.php» /script_args:»7011 » /in_tray:»true»

ping -n 1 -w 5000 192.168.254.254 >nul

start «XHE» «C:\XWeb MT\Human Emulator 7012\XWeb Human Emulator MT.exe» /port:»7012″ /script:»C:\XWeb MT\Human Emulator 7012\My Scripts\proxy\check_proxy.php» /script_args:»7012 » /in_tray:»true»

ping -n 1 -w 5000 192.168.254.254 >nul

start «XHE» «C:\XWeb MT\Human Emulator 7013\XWeb Human Emulator MT.exe» /port:»7013″ /script:»C:\XWeb MT\Human Emulator 7013\My Scripts\proxy\check_proxy.php» /script_args:»7013 » /in_tray:»true»

ping -n 1 -w 5000 192.168.254.254 >nul

start «XHE» «C:\XWeb MT\Human Emulator 7014\XWeb Human Emulator MT.exe» /port:»7014″ /script:»C:\XWeb MT\Human Emulator 7014\My Scripts\proxy\check_proxy.php» /script_args:»7014 » /in_tray:»true»

ping -n 1 -w 5000 192.168.254.254 >nul

start «XHE» «C:\XWeb MT\Human Emulator 7015\XWeb Human Emulator MT.exe» /port:»7015″ /script:»C:\XWeb MT\Human Emulator 7015\My Scripts\proxy\check_proxy.php» /script_args:»7015 » /in_tray:»true»

ping -n 1 -w 5000 192.168.254.254 >nul

Как мы видим тут добавилась строка ping -n 1 -w 5000 192.168.254.254 >nul. Это строка необходима нам для паузы между запуском
следующей копии Хумана.
Так же добавились аргументы командной строки самого Хумана: /script_args:»7011 » /in_tray:»true».
Аргумент /script_args служит для передачи аргументов внутрь скрипта, а /in_tray за сворачивание при старте Хумана в трэй.
Нужно отметить, что с помощью /script_args можно передавать в скрипт любое количество аргументов.
Для передачи их в скрипт используется запись /script_args «7015 аргумент1 аргумент2 и т.д. «.
Для получения этих аргументов в скрипте используется $argv — массив переданных скрипту аргументов, где:
$argv[0] — это всегда путь к скрипту, а $argv[1]- порт.
Остальные аргументы будут находиться в элементах массива $argv, начиная со второго, то есть: $argv[2] — аргумент1,
$argv[3] — аргумент1, $argv[4] — т.д.

Приведённый выше пример bat-файла запускает 5 Human Emulator, которые заранее были раскопированы по папкам
Human Emulator 7011, Human Emulator 7012, Human Emulator 7013, Human Emulator 7014, Human Emulator 7015.
Мы можем сделать запуск 5 копий программы и скрипта из одной папки. Для этого в скрипте в переменной $xhe_host нужно
поменять явное указание порта, на $argv[1], то есть в результате будем иметь $xhe_host =»127.0.0.1:».$argv[1];

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

Если в скрипте нужно работать с какими-то файлами, то для того что бы каждая копия работала со своим файлом можно добавить в
имена файлов $argv[1], например:

Для запуска нескольких Human Emulator из одной папки и одного и того же скрипта наш bat-файл будет выглядеть следующим образом:

start «XHE» «C:\XWeb MT\Human Emulator\XWeb Human Emulator MT.exe» /port:»7011″ /script:»C:\XWeb MT\Human Emulator\My Scripts\proxy\check_proxy.php» /script_args:»7011 » /in_tray:»true»

ping -n 1 -w 5000 192.168.254.254 >nul

start «XHE» «C:\XWeb MT\Human Emulator\XWeb Human Emulator MT.exe» /port:»7012″ /script:»C:\XWeb MT\Human Emulator\My Scripts\proxy\check_proxy.php» /script_args:»7012 » /in_tray:»true»

ping -n 1 -w 5000 192.168.254.254 >nul

start «XHE» «C:\XWeb MT\Human Emulator\XWeb Human Emulator MT.exe» /port:»7013″ /script:»C:\XWeb MT\Human Emulator\My Scripts\proxy\check_proxy.php» /script_args:»7013 » /in_tray:»true»

ping -n 1 -w 5000 192.168.254.254 >nul

start «XHE» «C:\XWeb MT\Human Emulator\XWeb Human Emulator MT.exe» /port:»7014″ /script:»C:\XWeb MT\Human Emulator\My Scripts\proxy\check_proxy.php» /script_args:»7014 » /in_tray:»true»

ping -n 1 -w 5000 192.168.254.254 >nul

start «XHE» «C:\XWeb MT\Human Emulator\XWeb Human Emulator MT.exe» /port:»7015″ /script:»C:\XWeb MT\Human Emulator\My Scripts\proxy\check_proxy.php» /script_args:»7015 » /in_tray:»true»

ping -n 1 -w 5000 192.168.254.254 >nul

Так же можно запускать несколько копий и каждой копии отдавать свой скрипт.
Для этого просто нужно будет указать этот скрипт в /script:»C:\XWeb MT\Human Emulator\My Scripts\proxy\check_proxy.php»

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

Ну и на последок пример кода скрипта Human Emulator, который сам создаёт бат-файл и запускает его на выполнение: