Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PHP, запуск внешней программы 
:(
    Опции темы
WolfAlone
Дата 9.8.2012, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В экстазе
***


Профиль
Группа: Завсегдатай
Сообщений: 1010
Регистрация: 16.9.2008
Где: Рай

Репутация: 1
Всего: 5



Доброго времени суток! Подскажите пожалуйста, можно ли решить следющую задачу:

Требуется:
1. Запустить внешнюю, консольную программу (с передачей ей параметров) с помощью PHP (внешнаяя программа - external_programm.exe)
2. Вывод консольной программы, передавать, по мере его поступления (или с заданным интервалом) передавать в браузер.

Вывод программы будет примерно такой (пример):
Код

Файл 1 - упакован успешно.
Файл 2 - добавлен на архивацию.
Файл 2 - упакован успешно.
Файл 3 - не найден.
...


В тестовых целях, используется следующее ПО:
Linux Debian 6
Apache 2.2
PHP 5.3

P.S. Права администратора, и пр. плюшки - не являются проблемой. Запуск внешней программы будет происходить на выделенном сервере, а не на вирутальном хостинге.


--------------------
И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!"

Ф топку Ubuntu, Debian наше фсё!

(с) Евгений Вольф
PM MAIL WWW ICQ Skype   Вверх
ksnk
Дата 9.8.2012, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



А тут ничего подходящего не попалось?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
WolfAlone
Дата 9.8.2012, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В экстазе
***


Профиль
Группа: Завсегдатай
Сообщений: 1010
Регистрация: 16.9.2008
Где: Рай

Репутация: 1
Всего: 5



ksnk, я полный дуб в запуске внених программ из PHP.

Подскажите пожалуйста, какую функцию лучше использовать, что бы вывод из скрипта передавался в браузерз сразу же, а не в конце выполнения программы?
passthru()shell_exec()system? Честно говоря, не до конца понимаю разницу между ними...


--------------------
И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!"

Ф топку Ubuntu, Debian наше фсё!

(с) Евгений Вольф
PM MAIL WWW ICQ Skype   Вверх
WolfAlone
Дата 9.8.2012, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В экстазе
***


Профиль
Группа: Завсегдатай
Сообщений: 1010
Регистрация: 16.9.2008
Где: Рай

Репутация: 1
Всего: 5



Видимо поспешил с вопросом. Функция system() прекрасно подошла для этих целей. 
ksnk, благодарю за помощь!


--------------------
И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!"

Ф топку Ubuntu, Debian наше фсё!

(с) Евгений Вольф
PM MAIL WWW ICQ Skype   Вверх
ksnk
Дата 9.8.2012, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Вариантов решения много - один другого сложнее. Простые случаи рассмотрены в промерах

Для очень медленных процессов(больше 30 секунд), я бы посоветовал выполнять процесс с перенаправлением вывода в текстовый файл. Для win-dos это выглядит как system('start /min tmp.bat'). tmp.bat - что-то вроде
Цитата

external_programm.exe > result.txt
echo complete>>result.txt
 
Строчка complete - уникальная сигнатура, по которой определяется окончился вывод или нет. 
Затем - ajax'ом посылать запрос на получение результирующего файла. В сессии оставлять значение длины файла. Если встретилось в конце  `complete`, значит файл выполнился, можно сообщать юзеру, что процесс закончился. 

Для Unix, батники пишутся под любимый шедулер, запуск external_programm в нем выглядит как-то так:
Цитата

external_programm.exe > result.txt 2>err.txt
...

 или просто мастерится длинная командная строка;
Для Unix? чтобы не ждать завершения команды - нужно оканчивать строку запуска символом &. Для Win - используются параметры команды start, но это, наверное, не важно ;)

К сожалению, реализация системных функций сильно различается для win (в моем тестовом случае) и для Unix, так что конкретнее - нужно ковырять любимую ос ...

Много разных вариантов старта описано в примерах на popen


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
krypt3r
Дата 10.8.2012, 05:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: 3
Всего: 16



Экзешники и батники на дебиане?  smile 
PM MAIL   Вверх
ksnk
Дата 10.8.2012, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



krypt3r, И что этому мешает?  smile   установить атрибут исполнения можно не глядя на расширение... 
Ну а про exe-шник - к автору топика.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1141 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.