Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wysłanie zakończenia strony do przeglądarki
neuromancer
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 24.10.2006

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


Mam dosyć nietypowy problem, ponieważ mój skrypt zapisuje zmiany w konfigu apache, następnie apache jest ponownie uruchamiany (aby ponownie wczytać konfiguracje).

Żeby go zrestartować użyłem tego:
  1. <?php
  2. system("net stop apache2 & net start apache2");
  3. ?>

Jednak w ten sposób przeglądarka poprostu staje i nie ładuje strony do końca i w końcu wywala 404.
Więc chciałbym przed tą komendą wysłać do przeglądarki coś co spowoduje zakończenie ładowania strony i powiedzmy wyświetli napis "proszę zaczekać 10 sekund...", a skrypt wykona komendę restartu apache.
Wydaje mi sie że żeby to zadziałało musze ustawić "ignore_user_abort = On" w php.ini

Można do sprawy podejść inaczej.
Można wykonać komende "D:\Server\Apache2\bin\Apache.exe -k restart" - kiedy wykonam to z wiersza poleceń (oczywiście kiedy usługa apache jest uruchomiona) to apache wczyta konfig ponownie, ale jak umieszcze to w skrypcie php to nic sie nie dzieje... skrypt dochodzi do końca, a configi nie są wczytywane ponownie, nie wiem czemu, tak jakby to sie w ogóle nie wykonywało.

A może jest jeszcze jakiś inny magiczny sposób zmuszenia apache'a do ponownego wczytania configu, którego nie znam?

EDIT: Coś czułem, że odpowiedzi nie bedzie szybko, o ile wogóle ktoś odpowie...

Ten post edytował neuromancer 12.05.2007, 21:08:58
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
neuromancer
post
Post #2





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 24.10.2006

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


Niestety, nie działa, przeglądarka nie dostaje tej zawartości, dostaje ją dopiero jak cały skrypt sie wykona.

Myśle nad napisaniem jakiego skryptu BAT który załatwi te komendy, a PHP go tylko wykona. Skrypt BAT bedzie sobie czekał 5 sekund i potem zamknie Apache i ponownie uruchomi, dając 5 sekund przeglądarce na wyświetlenie komunikatu, iż trzeba poczekać ~10 sekund na ponowną dostępność servera.

Mam problem jednak z funkcją exec
W manualu http://pl2.php.net/manual/en/function.exec.php pisze coś takiego:
Cytat
Note: 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.

Właśnie chciałbym ten skrypt odpalić jako program w tle, żeby php go odpaliło i nie czekało aż sie on sie zakończy.
Piszą że trzeba przekierować wyjście (2 parametr funkcji exec) do pliku albo gdzieś indziej... ale jak to zrobić?

Ponawiam jeszcze pytanie z 1 posta: Czy ktoś zna inny sposób restartu apache?
exec("D:\Server\Apache2\bin\Apache.exe -k restart"); niestety sie nie wykonuje, Apache powinien wczytać konfigi ponownie, ale tak sie nie dzieje.

Ten post edytował neuromancer 13.05.2007, 20:50:06
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 9.10.2025 - 22:33