HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

[PHP] Выполнение коменды с немедленным возвратом управления
  #1  
Старый 29.12.2009, 22:47
Kuzya
Участник форума
Регистрация: 27.04.2008
Сообщений: 224
С нами: 9494306

Репутация: 313
По умолчанию [PHP] Выполнение коменды с немедленным возвратом управления

Здравствуйте. Мне понадобилось сделать следующее.
Есть определённая команда, которая выполняется 3 минуты. Мне нужно как-то эту команду вызвать в командной строке через PHP. При этом управление должно моментально возвращаться к интерпритатору, не дожидаясь окончания работы самой команды. На данный момент пробовал 2 функции - exec(команда) и system(команда).
Они обе ждут пока команда полностью отработает, и лишь потом скрипт идёт дальше. Подскажите пожалуйста, как быть?
 
Ответить с цитированием

  #2  
Старый 29.12.2009, 22:52
Kaimi
Познавший АНТИЧАТ
Регистрация: 23.08.2007
Сообщений: 1,237
С нами: 9851426

Репутация: 1676


По умолчанию

мб proc_open
 
Ответить с цитированием

  #3  
Старый 30.12.2009, 15:07
Kuzya
Участник форума
Регистрация: 27.04.2008
Сообщений: 224
С нами: 9494306

Репутация: 313
По умолчанию

Так и не разобрался с ним =( Ну да ладно, нашёл другой выход. Просто вызываю запуск AJAX-ом и пользователь не видит то что команда выполняется долго =)
 
Ответить с цитированием

  #4  
Старый 30.12.2009, 15:27
Deathdreams
Постоянный
Регистрация: 08.11.2008
Сообщений: 498
С нами: 9213376

Репутация: 278
По умолчанию

Kuzya
Скинь решение проблемы, не будь единоличником
 
Ответить с цитированием

  #5  
Старый 30.12.2009, 15:28
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
С нами: 10021597

Репутация: 905


По умолчанию

Не знаю, как под виндой будет работать
PHP код:
<?php
  $pid 
pcntl_fork ();
  if (
$pid == -1)
    die (
"fork error\n");
  elseif (
$pid) {
    
//pcntl_wait ($status);
  
} else {
    
exec ('ping -c10 mail.ru > /tmp/111.111 2>&1');
  }
  echo 
"Exiting\n";
?>
Результат - зомби-процесс в никсах )
 
Ответить с цитированием

  #6  
Старый 30.12.2009, 16:10
Nightmarе
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
С нами: 10018169

Репутация: 1680


По умолчанию

так php же не многопоточный. Всё делается в одном потоке, и переключить команду в один поток и прожолжить выполнение... ну хз скорее навряд ли.
 
Ответить с цитированием

  #7  
Старый 31.12.2009, 08:40
Kuzya
Участник форума
Регистрация: 27.04.2008
Сообщений: 224
С нами: 9494306

Репутация: 313
По умолчанию

Deathdreams, зачем "скидывать решение"? Я же описал как всё сделал. Просто есть скрипт который запускает нужную мне команду, и обращаюсь я к нему с отдельной странички не GET-методом (как до этого), а AJAX-ом. Скрипт может хоть час выполняться - клиент этого не заметит. После AJAX-обращения он просто видит надпись "*** запущен" и работает дальше. Всё просто =)
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.