![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
WolfAlone |
|
|||
![]() В экстазе ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1010 Регистрация: 16.9.2008 Где: Рай Репутация: 1 Всего: 5 |
Доброго времени суток! Подскажите пожалуйста, можно ли решить следющую задачу:
Требуется: 1. Запустить внешнюю, консольную программу (с передачей ей параметров) с помощью PHP (внешнаяя программа - external_programm.exe) 2. Вывод консольной программы, передавать, по мере его поступления (или с заданным интервалом) передавать в браузер. Вывод программы будет примерно такой (пример):
В тестовых целях, используется следующее ПО: Linux Debian 6 Apache 2.2 PHP 5.3 P.S. Права администратора, и пр. плюшки - не являются проблемой. Запуск внешней программы будет происходить на выделенном сервере, а не на вирутальном хостинге. -------------------- И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!" Ф топку Ubuntu, Debian наше фсё! (с) Евгений Вольф |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
А тут ничего подходящего не попалось?
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
WolfAlone |
|
|||
![]() В экстазе ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1010 Регистрация: 16.9.2008 Где: Рай Репутация: 1 Всего: 5 |
ksnk, я полный дуб в запуске внених программ из PHP.
Подскажите пожалуйста, какую функцию лучше использовать, что бы вывод из скрипта передавался в браузерз сразу же, а не в конце выполнения программы? passthru(), shell_exec(), system? Честно говоря, не до конца понимаю разницу между ними... -------------------- И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!" Ф топку Ubuntu, Debian наше фсё! (с) Евгений Вольф |
|||
|
||||
WolfAlone |
|
|||
![]() В экстазе ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1010 Регистрация: 16.9.2008 Где: Рай Репутация: 1 Всего: 5 |
Видимо поспешил с вопросом. Функция system() прекрасно подошла для этих целей.
ksnk, благодарю за помощь! -------------------- И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!" Ф топку Ubuntu, Debian наше фсё! (с) Евгений Вольф |
|||
|
||||
ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Вариантов решения много - один другого сложнее. Простые случаи рассмотрены в промерах
Для очень медленных процессов(больше 30 секунд), я бы посоветовал выполнять процесс с перенаправлением вывода в текстовый файл. Для win-dos это выглядит как system('start /min tmp.bat'). tmp.bat - что-то вроде
Строчка complete - уникальная сигнатура, по которой определяется окончился вывод или нет. Затем - ajax'ом посылать запрос на получение результирующего файла. В сессии оставлять значение длины файла. Если встретилось в конце `complete`, значит файл выполнился, можно сообщать юзеру, что процесс закончился. Для Unix, батники пишутся под любимый шедулер, запуск external_programm в нем выглядит как-то так:
или просто мастерится длинная командная строка; Для Unix? чтобы не ждать завершения команды - нужно оканчивать строку запуска символом &. Для Win - используются параметры команды start, но это, наверное, не важно ;) К сожалению, реализация системных функций сильно различается для win (в моем тестовом случае) и для Unix, так что конкретнее - нужно ковырять любимую ос ... Много разных вариантов старта описано в примерах на popen -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
||||
|
|||||
krypt3r |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 9.6.2009 Репутация: 3 Всего: 16 |
Экзешники и батники на дебиане?
![]() |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
krypt3r, И что этому мешает?
![]() Ну а про exe-шник - к автору топика. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |