Дождаться выполнения внешней программы

romakhin

Guest
Дождаться выполнения внешней программы

Тут недавно поднимался вопрос - как запустить внешнюю программу из скрипта в фоновом режиме. Теперь обратный вопрос: нужно запустить внешнюю программу и, наоборот, дождаться, пока она закончит свою работу. Внешняя программа может работать от 1 до 30 секунд, и sleep() использовать будет нерационально. Программа в stdout ничего не пишет, ибо перенаправляется весь вывод в файл. ob_start() тоже не проканает - вывода много. (Конкретно: запускаю mysqldump, чтобы через веб-интерфейс бэкапить БД).
 

Demiurg

Guest
а зачем mysqldump запускать через скрипты ?
 

romakhin

Guest
Владелец сайта хочет, когда ему заблагорассудится, скачивать дамп базы. telnet'а нет по хостинговому плану.
 

maxidesk

Новичок
Немного не в тему, но может кому интересно будет...
для бэкапа БД через веб-интерфейс использую переделанный модуль для PHP-Nuke
исходник можно взятьздесь http://www.grunk.net/download.php?op=getit&lid=2

редактировать файл savedb.php
 

romakhin

Guest
...пока придумал способ несколько кривомудрый:
backup.sh:
#!/bin/sh
echo 1
mysqldump -u user -ppass database | gzip > /somewhere/sql.gz

index.php:
ob_start();
system("backup.sh");
ob_end();

Теперь backup.sh имеет вывод, маленький, и php ждёт, пока он отработает. Только как-то через ж это :)
 
Сверху