Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Как запустить выполнение программы.exe на сервере?
Покинул форум
Сообщений всего: 39
Дата рег-ции: Май 2009
Помог: 0 раз(а)
Приветствую.
Встала резкая проблема.
Требуется при помощи php или каких либо других средств, но желательно php, заставить windows запустить программу и начать её выполнение так, как это обычно происходит при запуске мышкой.
Пример:
Существует файл, который запускает игровой сервер по CS.
Скрипт запускает консоль, но при запуске выводится, что невозможно загрузить файл hlds.exe, так как в файле start не верно путь указан и выполнение идёт не так. Но при обычном запуске файла start, сервер кс запускается.
если же мы сразу напишем, всё то что запускай hlds.exe в файле start
и поставим путь верный к hlds.exe
То тогда консоль начинает работать, но теперь она не может найти внутренние файлы соответствующие запуску сервера. Так ак винда считает что путь запуска не папка сервера и теряет нужны файлы....
нашёл тако код, но не разобрался, что конкретно за что отвечает:
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
MoNSTRiK пишет:
не смог догнать пути, для чего какой и тп. особенно этот "cd /home/скрыта/"
Это просто никсовые пути. Считайте, что для вашего случая "/home/скрыта/" равноценна "D:/server/"
В общих словах идея такая:
1) сменить каталог силами командной оболочки на тот, откуда надо запускать hlds.exe
2) запускать стандартно
----- PostgreSQL DBA
JustUserR
Отправлено: 25 Января, 2010 - 17:48:25
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
MoNSTRiK пишет:
Скрипт запускает консоль, но при запуске выводится, что невозможно загрузить файл hlds.exe, так как в файле start не верно путь указан и выполнение идёт не так. Но при обычном запуске файла start, сервер кс запускается
Наверное потому что надо установить правильно рабочую папку - например с помощью обычного cd /папка и тогда уже запускать cmd-файл
Кроме того приведенный от кого-то автора код не будет работаь потому что там UNIX и в windows в частности не будет работать killall (Что немаловажно при перезапуске демонов) И помимо того в UNIXе с помощью перенапрявления вывода в файл > и оператора & обеспечивается фоновый режим - в windows для этого служит start
Таким образом задача несколько усложняется - во-первых надо проверять наличие процессов с помощью tasklist и удалять их taskkill - во-вторых при запуске надо запускать bat-файл который будет устанавливать рабочую папку и делать дальнейший запуск Вероятно надо прописывать часть переменных окружения
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
MoNSTRiK
Отправлено: 25 Января, 2010 - 18:22:35
Новичок
Покинул форум
Сообщений всего: 39
Дата рег-ции: Май 2009
Встала другая проблема.
При запуске сервера всё работает и грузится, вот только страница с которой произошёл запуск остаётся работать. Видима обмен пакетами идёт или ещё что. Как можно этого избежать? Чтобы сервер запускался и скрипт забывал про дальнейшую работу с ним.
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Champion, у MoNSTRiK винда на хосте ;)
MoNSTRiK, под виндой /dev/null отсутствует. Попробуйте дописать > log.txt &
Я, правда, не уверен, что сработает - с командной строкой виндов не разбирался.
----- PostgreSQL DBA
MoNSTRiK
Отправлено: 25 Января, 2010 - 22:08:30
Новичок
Покинул форум
Сообщений всего: 39
Дата рег-ции: Май 2009
Помог: 0 раз(а)
Мелкий пишет:
Champion, у MoNSTRiK винда на хосте ;)
MoNSTRiK, под виндой /dev/null отсутствует. Попробуйте дописать > log.txt &
Я, правда, не уверен, что сработает - с командной строкой виндов не разбирался.
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
MoNSTRiK Для того чтобы PHP-скрипт перестал висеть необходимо запускать его с перенаправление в >nul (Под windows) Но при этом проблема заключается в том что может и так не получиться - ведь под windows знак & является просто объединением команд и не запускает фонового режима (На всякий случай можете добавить 2>&1 >nul чтобы перекрыть и поток ошибок)
Если по закрытии страницы сервер все равно остается работать то можете поставить просто поменьше time_limit - а если же суть имено в том чтобы запустить daemon и продолжить работу то можете еще попробовать открыть процесс с помощью popen
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
MoNSTRiK
Отправлено: 26 Января, 2010 - 02:07:57
Новичок
Покинул форум
Сообщений всего: 39
Дата рег-ции: Май 2009
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
MoNSTRiK пишет:
Открыть процесс с помощью popen
Спасибо!!! я понял.
Пожалуйста! Когда решите написать PHP-скрипт удаленного завершения сервера обращайтесь
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
MoNSTRiK
Отправлено: 27 Января, 2010 - 00:35:22
Новичок
Покинул форум
Сообщений всего: 39
Дата рег-ции: Май 2009
Помог: 0 раз(а)
Цитата:
Пожалуйста! Когда решите написать PHP-скрипт удаленного завершения сервера обращайтесь
Вот, это был бы мой следующий вопрос! )) и тема. Ну раз уж затронули данную тему.
Расскажите как это реализовать, на примере, если не сложно. А то я чувствую, что ещё сутки поисков я не выдержу ))
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
MoNSTRiK пишет:
Вот, это был бы мой следующий вопрос! )) и тема. Ну раз уж затронули данную тему. Расскажите как это реализовать, на примере, если не сложно. А то я чувствую, что ещё сутки поисков я не выдержу ))
Собственно говоря вся суть PHP-скрипта для остановки daemon-а заключается в том чтобы получить номер процесса и этот процесс удалить
Если на вашем сервере в консоли есть утилиты tasklist и taskkill то все предельно просто - вы сначала вызываете tasklist с заданием фильтра по имени образа или имени исполняемого файла и получаете ID процесса и потом передаете его в taskkill и завершаете соответствующий процесс ПО сути дела достаточно даже одного taskkill так как он может убирать процесс также по фильтру - описания опций этих утилит можно прочитать в консоли tasklist /? и taskkill /? соответственно
Если таких утилит нету то задача немного усложняется - так как придется использовать дополнительную внешную програмку ps для получения списка процессов (Прилагаю ее вложением) Далее вы запускаете ее и получаете вывод с помощью считывания с popen - после этого получаете номер нужного процесса - и делаете запуск posix_kill(полученный_номер_процесса,9)
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.