Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> exec()
Athlan
post
Post #1





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

Ostrzeżenie: (0%)
-----


Witam,

używam funkcji exec() do odpalania pewnych poleceń. Często trzeba czekać po 30 sekund, zanim uzyskam rezultat, a w tym czasie cały serwis się "zawiesza", z tego względu, że (jak wszyscy dobrze wiemy) PHP czeka na odpowiedź execa.

Problemu by nie było, gdybym nie musiał przechwytywać outputu z execa i uruchamiałbym całość z basha, jak to robię zwykle. Działa jako osobny proces, dlatego nie koliduje z systemem. Wiadomo, że output mogę zapisać do pliku i co chwila sprawdzać, czy się coś nie pojawiło, ale nie tędy droga, jest wiele parametrów do tej komendy, które muszę ustawić w php "w locie".

No nic, niestety muszę przechwycić output i moje pytanie jest następujące: jak zrobić, żeby pomimo tego, że PHP czeka na output, uruchomił to jakby w osobnym procesie, tak, aby reszta działała płynnie. Sprawa jest o tyle komfortowa, że proces dotyczy tylko działań administracyjnych, a nie użytkownika, więc nie ma mowy o 'zatkaniu' się serwera.

Może nie doczytałem manuala, ale wertowałem dość sporo. Z góry dzięki za pomoc.

Athlan.


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
everth
post
Post #2





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

Ostrzeżenie: (0%)
-----


Hmm, chyba nie do końca rozumiem o co ci chodzi. Cały serwer czyli tylko ten konkretny skrypt (np. panel administracyjny)?

W tym drugim przypadku możesz skorzystać z ajaxa - wywoła odpowiedni skrypt i będzie czekał na odpowiedź - przy okazji użytkownik może robić co chce. Problem jest wtedy gdy użytkownik zmieni stronę (nie wychwyci już wtedy odpowiedzi) - ale możesz gdzieś zapisać odpowiedź i parametry a przy każdym ładowaniu panelu sprawdzać ajaxem czy coś się wygenerowało.

W pierwszym wypadku pierwsze co mi przyszło do głowy to przestawienie PHPa na FastCGI.


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
Athlan
post
Post #3





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

Ostrzeżenie: (0%)
-----


Problem rozwiązałem stawiając panel admina (na tym samym katalogu) w innym Virtual Hoście. Procesy są wówczas osobne. Panel muli, a strona chodzi. Mozna również do komendy dodać > /dev/null &, wówczas powinna odpalić się w backgroundzie, ale trzeba użyć exec(), a przerzuciłem się na proc_open(), żeby chwytać output.


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 12:08