![]() |
![]() |
![]()
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:
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 |
|
|
![]() |
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 22:33 |