- Помогите зазобраться с запуском php скрипта с консоли,
mummy, 20:43 , 27-Сен-06 (1)во FreeBSD есть утилита daemon (man daemon). может она есть и для линукса? - Помогите зазобраться с запуском php скрипта с консоли,
mephius, 20:46 , 27-Сен-06 (2)>подскажите как правильно запустить паралельный скрипт для выполнения, например рассылки почты, после >нажатия на кнопку (например при добавлении новой темы в форуме) >тоесть чтобы пользователь не ждал пока выполнится скрипт рассылки, а этого даже >не заметил по времени. вот так, например: <? passthru("(/path/to/php -f /path/to/script.php & ) >> /dev/null 2>&1"); ?>
можно так же в script.php вписать интерпретатор в начало: #!/path/to/php <? //script here ?> тогда можно будет сделать вот так: <? passthru("(/path/to/script.php & ) >> /dev/null 2>&1"); ?> Перенаправление вывода нужно для того, чтобы скрипт, запустивший passthru, не ждал окончания его работы.
- Помогите зазобраться с запуском php скрипта с консоли,
mel_sasha, 11:31 , 28-Сен-06 (3)>>подскажите как правильно запустить паралельный скрипт для выполнения, например рассылки почты, после >>нажатия на кнопку (например при добавлении новой темы в форуме) >>тоесть чтобы пользователь не ждал пока выполнится скрипт рассылки, а этого даже >>не заметил по времени. > > >вот так, например: ><? >passthru("(/path/to/php -f /path/to/script.php & ) >> /dev/null 2>&1"); >?> > >можно так же в script.php вписать интерпретатор в начало: > >#!/path/to/php ><? >//script here >?> > >тогда можно будет сделать вот так: ><? >passthru("(/path/to/script.php & ) >> /dev/null 2>&1"); >?> > >Перенаправление вывода нужно для того, чтобы скрипт, запустивший passthru, не ждал окончания >его работы. Я извеняюсь за возможно глупый вопрос, но что значит в срочке passthru("(/path/to/php -f /path/to/script.php & ) >> /dev/null 2>&1");
"-f" и ">> /dev/null 2>&1" - это чтобы уже полностю разобраться с этим вопросом и понимать как и что работает
- Помогите зазобраться с запуском php скрипта с консоли,
mephius, 12:17 , 28-Сен-06 (4)>>>подскажите как правильно запустить паралельный скрипт для выполнения, например рассылки почты, после >>>нажатия на кнопку (например при добавлении новой темы в форуме) >>>тоесть чтобы пользователь не ждал пока выполнится скрипт рассылки, а этого даже >>>не заметил по времени. >> >> >>вот так, например: >><? >>passthru("(/path/to/php -f /path/to/script.php & ) >> /dev/null 2>&1"); >>?> >> >>можно так же в script.php вписать интерпретатор в начало: >> >>#!/path/to/php >><? >>//script here >>?> >> >>тогда можно будет сделать вот так: >><? >>passthru("(/path/to/script.php & ) >> /dev/null 2>&1"); >>?> >> >>Перенаправление вывода нужно для того, чтобы скрипт, запустивший passthru, не ждал окончания >>его работы. > > >Я извеняюсь за возможно глупый вопрос, но что значит в срочке passthru("(/path/to/php -f /path/to/script.php & ) >> /dev/null 2>&1"); > >"-f" и ">> /dev/null 2>&1" - это чтобы уже полностю разобраться с этим вопросом и понимать как и что работаетOk. читаем про passthru: http://www.php.net/manual/en/function.passthru.php видим, что passthru выполняет заданную в параметрах системную команду. смотрим, как из консоли запустить на выполнение php скрипт: смотрим man php , видим такую строчку php [options] [ −f ] file [[−−] args...] что означает, что если нужно выполнить php скрипт, то запускать нужно вот так: #/path/to/php -f /path/to/script.php Это было насчет "-f". Надеюсь, что ответил на первую половину вопроса. Дальше. Определились, что будем выполнять вот такую команду: /path/to/php -f /path/to/script.php Дальше. Читаем ман по passthru: http://www.php.net/manual/en/function.passthru.php If you start a program using this function and want to leave it running in the background, you have to make sure that the output of that program is redirected to a file or some other output stream or else PHP will hang until the execution of the program ends. Что в кратце означает, что passthru не будет ждать окончания выполнения, если отправить процесс в бэкграунд и вывод этого процесса перенаправлен в файл или поток.
В бэкграунд выполнение скрипта можно отправить добавлением амперсанда в конце: /path/to/php -f /path/to/script.php & Кроме того, нам еще нужно перенаправить вывод. Читаем man sh секцию REDIRECTION (не буду ее здесь приводить) и приходим к такуму решению: перенаправим STDOUT и STDERR в /dev/null, так как на совсем не интересно, что там выводит этот, запускаемый в бэкграунде, скрипт. Получаем: (/path/to/php -f /path/to/script.php & ) >> /dev/null 2>&1 Если вывод все-таки интересен, то можно перенаправлял вывод в какой-нить файл: (/path/to/php -f /path/to/script.php & ) >> /path/to/script.log 2>&1 Таким образом ">> /dev/null 2>&1" означает перенаправление STDOUT и STDERR в /dev/null
- Помогите зазобраться с запуском php скрипта с консоли,
mel_sasha, 12:57 , 28-Сен-06 (5)>>>>подскажите как правильно запустить паралельный скрипт для выполнения, например рассылки почты, после >>>>нажатия на кнопку (например при добавлении новой темы в форуме) >>>>тоесть чтобы пользователь не ждал пока выполнится скрипт рассылки, а этого даже >>>>не заметил по времени. >>> >>> >>>вот так, например: >>><? >>>passthru("(/path/to/php -f /path/to/script.php & ) >> /dev/null 2>&1"); >>>?> >>> >>>можно так же в script.php вписать интерпретатор в начало: >>> >>>#!/path/to/php >>><? >>>//script here >>>?> >>> >>>тогда можно будет сделать вот так: >>><? >>>passthru("(/path/to/script.php & ) >> /dev/null 2>&1"); >>>?> >>> >>>Перенаправление вывода нужно для того, чтобы скрипт, запустивший passthru, не ждал окончания >>>его работы. >> >> >>Я извеняюсь за возможно глупый вопрос, но что значит в срочке passthru("(/path/to/php -f /path/to/script.php & ) >> /dev/null 2>&1"); >> >>"-f" и ">> /dev/null 2>&1" - это чтобы уже полностю разобраться с этим вопросом и понимать как и что работает > >Ok. > >читаем про passthru: http://www.php.net/manual/en/function.passthru.php > >видим, что passthru выполняет заданную в параметрах системную команду. > >смотрим, как из консоли запустить на выполнение php скрипт: > >смотрим man php , видим такую строчку >php [options] [ −f ] file [[−−] args...] > >что означает, что если нужно выполнить php скрипт, то запускать нужно вот >так: >#/path/to/php -f /path/to/script.php > >Это было насчет "-f". Надеюсь, что ответил на первую половину вопроса. > >Дальше. Определились, что будем выполнять вот такую команду: /path/to/php -f /path/to/script.php > >Дальше. Читаем ман по passthru: http://www.php.net/manual/en/function.passthru.php > >If you start a program using this function and want to leave >it running in the background, you have to make sure that >the output of that program is redirected to a file or >some other output stream or else PHP will hang until the >execution of the program ends. > > >Что в кратце означает, что passthru не будет ждать окончания выполнения, если >отправить процесс в бэкграунд и вывод этого процесса перенаправлен в файл >или поток. > >В бэкграунд выполнение скрипта можно отправить добавлением амперсанда в конце: /path/to/php -f >/path/to/script.php & > >Кроме того, нам еще нужно перенаправить вывод. Читаем man sh секцию REDIRECTION >(не буду ее здесь приводить) и приходим к такуму решению: > >перенаправим STDOUT и STDERR в /dev/null, так как на совсем не интересно, >что там выводит этот, запускаемый в бэкграунде, скрипт. Получаем: > >(/path/to/php -f /path/to/script.php & ) >> /dev/null 2>&1 > >Если вывод все-таки интересен, то можно перенаправлял вывод в какой-нить файл: > >(/path/to/php -f /path/to/script.php & ) >> /path/to/script.log 2>&1 > >Таким образом ">> /dev/null 2>&1" означает перенаправление STDOUT и STDERR в /dev/null Прочитал, мозги вскепели, я так понял что это все работает только под Линуксом, акак сделать тоже самое под виндой. Если работает под виндой, то где можно почитать о STDOUT и STDERR ? Кроме того хочу узнать как Вы узнали что перенаправление потокак в ,truhfeyl идет через добавления & ?
Я Php только начал учить может я точ-то упустил...
- Помогите зазобраться с запуском php скрипта с консоли,
mephius, 13:06 , 28-Сен-06 (6)>Прочитал, мозги вскепели, :) >я так понял что это все работает только под >Линуксом, акак сделать тоже самое под виндой. Если работает под виндой, >то где можно почитать о STDOUT и STDERR ? Кроме того >хочу узнать как Вы узнали что перенаправление потокак в ,truhfeyl идет >через добавления & ? > >Я Php только начал учить может я точ-то упустил... Насчет амперсанда — опять же читаем man sh, там есть. man sh | grep background . Я просто думал, что уж про амперсанд точно все знают. Под виндой задача остается та же: отправить процесс в бэкграунд и перенаправить его вывод куда-нибудь в сад. Как это сделать я сейчас сказать не могу — нужно эксперименторовать.
- Помогите зазобраться с запуском php скрипта с консоли,
mel_sasha, 13:10 , 28-Сен-06 (7)>>Прочитал, мозги вскепели, >:) >>я так понял что это все работает только под >>Линуксом, акак сделать тоже самое под виндой. Если работает под виндой, >>то где можно почитать о STDOUT и STDERR ? Кроме того >>хочу узнать как Вы узнали что перенаправление потокак в ,truhfeyl идет >>через добавления & ? >> >>Я Php только начал учить может я точ-то упустил... > >Насчет амперсанда — опять же читаем man sh, там есть. man sh >| grep background . Я просто думал, что уж про амперсанд >точно все знают. > >Под виндой задача остается та же: отправить процесс в бэкграунд и перенаправить >его вывод куда-нибудь в сад. Как это сделать я сейчас сказать >не могу — нужно эксперименторовать. Огромное спасибо за детальны разбор, но у меня остался последний вопрос, что такое man sh, чтотакое ман понятно, а что такое SH ? еще раз извениете, если вопросы глупые
- Помогите зазобраться с запуском php скрипта с консоли,
mephius, 13:21 , 28-Сен-06 (8)>Огромное спасибо за детальны разбор, но у меня остался последний вопрос, что >такое man sh, чтотакое ман понятно, а что такое SH >? еще раз извениете, если вопросы глупые sh, jsh - standard and job control shell and command interpreter, если проще — стандартный командный интерпретатор.
а вот, собственно, и сам ман: https://www.opennet.ru/man.shtml?topic=sh&russian=0&category=...
|