IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   Скрипт в UNIX (http://www.imho.ws/showthread.php?t=87067)

Naked 09.06.2005 20:51

А в PHP можно выполнить команду Unix (типа exec()), только при этом не дожидаться результата выполнения этой команды?

RaZEr 09.06.2005 20:57

cmd 2>&1 > /dev/null

Naked 09.06.2005 21:00

А cmd это команда или это все cmd 2>&1 > /dev/null нужно перед командой набрать...или после? :)

RaZEr 09.06.2005 21:07

cmd это и есть твоя комманда

Naked 09.06.2005 21:11

Не получается...:( я сделал маленькую страничку, которая должна запускать скрипт (а в нем бесконечный цикл) и у меня страничка виснет, даже если я cmd 2>&1 > /dev/null делаю и & добавляю, все равно висит... :( Кстати, если набираю тоже в командной строке, то тоже висит...может ты ошибся где-то?

RaZEr 09.06.2005 23:10

Цитата:

Кстати, если набираю тоже в командной строке, то тоже висит...может ты ошибся где-то?
Наврядли. Я вообще не припомню случая чтобы "cmd &" вешала терминал.

Что можно посоветовать. Запускай *.sh который будет в свою очередь запускать твою программу.

helldomain 10.06.2005 07:27

Pozwoliu sebe wmeshatsya, exec() w php ne reagiruet ni na perenaprawlenie stdout, stderr i &. Sorc ne smotrel, no kak ya ponimaju, php dojidaetsya okonchaniya processa.

Naked 10.06.2005 09:33

В том то и дело, что cmd & не вешает терминал, а cmd 2>&1 > /dev/null вешает :) Я сделал скрипт на perl, который запускает программу, только PHP все равно ждет чего-то, с *.sh будет по другому?

DeADMoroZ 10.06.2005 10:40

Пусть php запускает *.sh, которая в свою очередь запускает cmd 2>&1>/dev/null. Т.е. скрипт *.sh будет отрабатывать и возвращатся к php, а cmd будет в памяти висеть.

Hubbitus 10.06.2005 12:01

Цитата:

helldomain:
exec() w php ne reagiruet ni na perenaprawlenie stdout, stderr i &.
На перенаправление stdout и stderror он реагирует прекрасно, да и было бы странно если бы это было подругому: Он просто передает это как есть на выполнение системе. С бакграундом (&) не пробовал, но полагаю что тоже должно нормально работать.

cmd 2>&1 > /dev/null запустит просто cmd с выводом всех сообщений в "никуда", это не запустит в бакграунд его, ПХП будет ждать завершения этой комманды.

Hubbitus 10.06.2005 13:04

А чтобы запустить что-то и не ждать завершения, можно конечно форкать процесс (в ПХП функция pcntl_fork), для управления процессаим вообще смотри соответствующий раздел МАНа: http://php.rinet.ru/manual/ru/ref.pcntl.php

Naked 10.06.2005 18:32

Я не знаю как писать в sh... Но я же говорю - создаю скрипт на perl'е, который запускает программу, в perle юзаю exec - эта функция вызывает выход из скрипта после своего завершения, саму команду пишу со всякими 2>&1>/dev/null и &, но все равно php висит... :mad: :confused:

Hubbitus 10.06.2005 19:44

Цитата:

The_naked:
саму команду пишу со всякими 2>&1>/dev/null и &, но все равно php висит..
Говорю же, форкай процесс, чтобы он не ждал завершения!

Полагаю на ПЕРЛе он тоже будет завершения ждать если просто EXEC использовать, также процессами управлять придется...

Oleg 14.06.2005 16:38

По-моему, дурной стиль оставлять в памяти веб-сервера постоянно работающий веб-скрипт. Нельзя его каждую минуту в cron запускать, что ли?

На некоторых хостингах вообще время жизни любого процесса ограничено...несколькими минутами в зависимости от тарифного плана.

Naked 14.06.2005 21:04

может это и дурной тон, но так надо, каждую минуту - слишком большой интервал... У меня другой вопрос - как в Perl'e обратиться к базе postgresql? Приконнектиться и выполнить запрос? :help:


Часовой пояс GMT +4, время: 05:46.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.