system, exec вывод в файл
закончится.
Я направляю вывод в файл, но php все равно ждёт окончания выполнения. Может я что-то не так делаю?
Вывод сохраняется в файл, но пхп подвисает :(
но можно попробовать
или
bg pid
где pid - номер запущенного процесса
Линукса щас под рукой нет, посмотреть не могу...
но можно попробовать
или
bg pid
где pid - номер запущенного процесса
Линукса щас под рукой нет, посмотреть не могу...
А я под виндой :)
А какая разница? Действия можно выполнить теже самые, просто не всегда такими же командами.
Когда же люди наконец поймут, что винда - не та операционная система, чтоб сайты держать и такой "сложный" софт гонять :)
1) "Линукса щас под рукой нет, посмотреть не могу..." -> "А я под виндой :)"
2) Софтина разрабатывается для моей локальной машины, и она не является сервером, на котором держат сайты
Тогда такой вопрос. Внешняя программа должна работать не больше 10 секунд. Как я могу запустить и прервать с помощью пхп?
Можно сделать так $proc = popen($command, "r"). Но как мне его прервать? ведь оно опять виснет
Будет два скрипта. Один запускает процесс, а второй - убивает.
Команды такие
...
system('taskkill /F /IM my_ext_programm_file_name');
Только нужно придумать какое-то взаимодействие между этими файлами, и как-то их запускать периодически (типа крона), или запустить один раз и со слипами гонять до победного конца.
Только нужно придумать какое-то взаимодействие между этими файлами,
Если тебе нужна синхронизация между файла и что один файл мог дергать/запускать_по_событию другой, то в первой файле вызывай запуск второго через file_get_contents() к примеру. По крайней мере я обычно так управляю одним скриптом из другого.
Это все мелочи ;) Главное изюминка! А реализация на заднем фоне
бггг... т. е. реализации fork & exec в пехапе нету? ага? не верю. и нити он должен уметь.
проблема автора - в непонимании того, что есть system. ожидать окончания выполнения внешней программы программа инициирующая запуск будет до тех пор, пока не произойдет возврата из этой самой запущенной программы. пофигу - куда направлен STDOUT.
далее - в поиск по форуму. я уже раз 10 писал, чем отличается system и exec.
вкратце - тебе надо самостоятельно реализовать system (ЕМНИП, system=fork+exec+wait/waitpid) но без ожидания возврата. т. е. - родитель форкает потомка, отпускает его в самостоятельное плавание, а сам работает дальше. если есть вероятность, что он завершить раньше потомка - делать потомок демоном.
проблема автора - в непонимании того, что есть system. ожидать окончания выполнения внешней программы программа инициирующая запуск будет до тех пор, пока не произойдет возврата из этой самой запущенной программы. пофигу - куда направлен STDOUT.
далее - в поиск по форуму. я уже раз 10 писал, чем отличается system и exec.
вкратце - тебе надо самостоятельно реализовать system (ЕМНИП, system=fork+exec+wait/waitpid) но без ожидания возврата. т. е. - родитель форкает потомка, отпускает его в самостоятельное плавание, а сам работает дальше. если есть вероятность, что он завершить раньше потомка - делать потомок демоном.
Та уже давно сделал, отписался и забыл.
И не нужно мне писать "проблема автора - в непонимании того, что есть system.", я привёл цитату с мануала, и хотел знать правда ли это. Если да - то зачем извращаться, если нет - буду что-то думать, что я и сделал за несколько дней до Вашего поста.
И чем отличается system от exec я, вроде, тоже не спрашивал.
Отвечайте на конкретные вопросы или вообще ничего не пишите.
И чем отличается system от exec я, вроде, тоже не спрашивал.
Отвечайте на конкретные вопросы или вообще ничего не пишите.
:D
Ой как невежливо... Пишет то тебе не новичок, очень может быть, что его совет будет тебе полезным, а ты сразу "ни чё не пишите"...нехорошо.
Отвечайте на конкретные вопросы или вообще ничего не пишите.
я ответил на вопрос целиком и полностью. и указал что следует изучить, чтобы проблемы больше не возникало. читайте внимательно, юноша и не хамите.