Подача команд в дорген через порт
Многих, кто генерит доры на конвейере, интересует, как из другой программы запустить генерирование с нужными проектами не перезапуская дорген. Это можно сделать, подав нужные команды на порт. Приведу пример, как это сделать из php. На вкладке Scripting выполните это: StartCommandListener(2351,'1234'); Дорген начнёт слушать порт 2351. '1234' - случайное число, играет роль пароля. После внесения в proj.txt новой партии проектов нужно исполнить в доргене команды reloadprojects(); updateprojects(); чтобы перезагрузить проекты в доргене. Для этого подаём на порт команду SCRIPT с нужным скриптом, а потом команду START_GENERATING:
//Перезагружаются проекты $fp = fsockopen ("localhost", 2351, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br>\n"; } else {
fputs ($fp, "1234\r\nSCRIPT:\r\nreloadprojects(); updateprojects();\r\nEND_SCRIPT\r\n");
while (!feof($fp)) { echo fgets ($fp,128); } fclose ($fp); }
sleep(1);
//Запускается генерирование
$fp = fsockopen ("localhost", 2351, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br>\n"; } else {
fputs ($fp, "1234\r\nSTART_GENERATING\r\n");
while (!feof($fp)) { echo fgets ($fp,128); } fclose ($fp); }
Синтаксис команд таков: 1234\r\nSTART_GENERATING\r\n Сначала идёт пароль, т.е. 1234, потом перевод строки \r\n, потом сама команда, и потом снова \r\n.
У команды SCRIPT синтаксис таков: 1234\r\nSCRIPT:\r\nreloadprojects(); updateprojects();\r\nEND_SCRIPT\r\n Сначала идёт пароль, потом \r\n, потом сама команда SCRIPT: , потом \r\n, потом идёт скрипт, который надо выполнить в доргене, потом снова \r\n, и закрывает команду END_SCRIPT и \r\n после.
В ответ на команды приходит результат их выполнения. Начало ответа всегда 0 или 1. 0 - команда не выполнилась по каким-либо причинам, а 1 - команда выполнилась успешно. После идёт пробел, а после результат конкретной команды. Например команда 1234\r\nSCRIPT:\r\nprint('Hello!!!');\r\nEND_SCRIPT\r\n вернёт: 1 Hello!!!
Как узнать статус работы доргена: Команда STATUS:
$fp = fsockopen ("localhost", 2351, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br>\n"; } else {
fputs ($fp, "1234\r\nSTATUS\r\n");
while (!feof($fp)) { echo fgets ($fp,128); } fclose ($fp); }
Ответ, как обычно, начинается с 0 или 1. Пример ответа: 1 0 Единица означает, что запрос успешно выполнен, а 0, то что дорген в настоящий момент ничего не делает. Если дорген генерит, то ответ может быть например: 1 1 2/3 , где вторая единица означает, что идёт генерирование, а 2/3 - что генерится второй проект из трёх. Если вторая цифра 2 - значит идёт фтп закачка, а если 3 то отправка в апостер.
В общем, кто интересуется такими возможностями, пишите мне на JakoKruzo@mail.ru . |
|