The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"exec() -> background"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [Проследить за развитием треда]

"exec() -> background"  
Сообщение от Antares on 07-Мрт-06, 15:19 
Как загнать процесс, вызываемый РНР скриптом, в бакграунд: так, чтоб нажал кнопку, запустил РНР скрипт и закрыл браузер, а РНР скрипт бы работал?
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "exec() -> background"  
Сообщение от Ilyang (??) on 07-Мрт-06, 15:41 
нужно копать в сторону модуля pcntl
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

8. "exec() -> background"  
Сообщение от Antares on 10-Мрт-06, 08:38 
>нужно копать в сторону модуля pcntl

Дело в том, что я не занимаюсь разработкой модулей.
Я - чистый скриптер.

Так что Ваш совет мне вряд ли поможет.  :)

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

9. "exec() -> background"  
Сообщение от Ilyang (??) on 10-Мрт-06, 11:36 
Не предлагаю Вам писать модули для php, есть готовый модуль pcntl, работает, насколько я знаю, исключительно под *nix в cgi скриптах
  http://php.rinet.ru/manual/ru/ref.pcntl.php

из модуля для запуска скрипта в бэкграунде можно использовать
pcntl_fork()
  http://php.rinet.ru/manual/ru/function.pcntl-fork.php

Также могут пригодиться функции

ignore_user_abort()
  http://php.rinet.ru/manual/ru/function.ignore-user-abort.php

set_time_limit()
  http://php.rinet.ru/manual/ru/function.set-time-limit.php

Если Вы имеете в виду что то другое под запуском скрипта в бэкграунде - извиняйте.
Для себя нашел такое решение, хотя это и не exec() -> background

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "exec() -> background"  
Сообщение от Жека (??) on 07-Мрт-06, 16:51 
& в конце команды не помогает?
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "exec() -> background"  
Сообщение от Antares on 07-Мрт-06, 20:28 
>& в конце команды не помогает?

Хороший ход.  :)

Но я думал о нём.
Дело в том, что цикл(-ы) сканирования сети хочу организовать по сетке, расписанной в файле(-лах), на РНР, которая вызывала бы отдельные команды (ping, nbtstat, telnet, ftp, etc).

Допустим, есть такая строчка в функции моего скрипта:
   $answer[] = exec("ping -c 1 -w 1 $ip &",$answer);
Разве ушедшая в бакграунд команда ping вернёт мне свой результат в массив $answer?
И как РНР "узнает", что команда успешно завершена?

А теперь ещё одно усложнение: моя функция написана с учётом мультиплатформенности. Как думаете, под вындами данная строчка сработает:
   $answer[] = exec("ping -n 1 $ip &",$answer);?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "exec() -> background"  
Сообщение от Жека (??) on 08-Мрт-06, 00:06 
>Разве ушедшая в бакграунд команда ping вернёт мне свой результат в массив $answer?
Может по exec и не вернёт, такие тонкости php не проверял. Но может это пойдёт, по крайней мере заявлено php.net, что возвращает:
shell_exec - Execute command via shell and return the complete output as a string
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

7. "exec() -> background"  
Сообщение от rWizard email(??) on 08-Мрт-06, 21:50 
pnctl_fork(),
потом в posix_setsid()

$pid = pcntl_fork();
if ($pid == -1) {
     die('could not fork');
} else if ($pid) {
     // we are the parent
     echo "Working"; exit 0 // (или как там это на php)
} else {
     // we are the child
     posix_setsid();
     // сюда вставляем код, который будет работать в бекграунде
}

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

5. "exec() -> background"  
Сообщение от THESERG email(??) on 08-Мрт-06, 12:48 
<?
system ("команда параметры > /каталог_на_запись/out 2> /каталог_на_запись/err");
?>
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

6. "exec() -> background"  
Сообщение от THESERG email(??) on 08-Мрт-06, 12:49 
<?
system ("команда параметры > /каталог_на_запись/out 2> /каталог_на_запись/err &");
?>
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

10. "exec() -> background"  
Сообщение от taienos on 10-Мрт-06, 16:31 
>Как загнать процесс, вызываемый РНР скриптом, в бакграунд: так, чтоб нажал кнопку,
>запустил РНР скрипт и закрыл браузер, а РНР скрипт бы работал?
>

Не уверен, что понял задачу :) но может быть register_shutdown_function тебе поможет?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру