![]() |
![]() ![]() |
![]() |
![]()
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 -------------------- localhost: Apache 2.0.59, PHP 5.2.1, MySQL 4.1.22
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 656 Pomógł: 3 Dołączył: 26.10.2005 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
hmm może zrób tak, iż każesz zrobić stop w tym pliku a start np w okienku POPUP który uruchomi to polecenie np. po 10 sekundach.
Lub (tego nie jestem pewien) poprzez AJAX dasz start(); -------------------- zmoderowano - waga i rozmiar
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 17.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
Próbowałeś czegoś takiego?:
-------------------- art of programming
|
|
|
![]()
Post
#4
|
|
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 -------------------- localhost: Apache 2.0.59, PHP 5.2.1, MySQL 4.1.22
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 13.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
A nie możesz mieć dwóch apache`y ? Do konfiguracji jednego używałbyś drugiego który obsługuje np tylko i wyłacznie jedną subdomenę.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 2 Dołączył: 6.07.2005 Skąd: Legnica Ostrzeżenie: (0%) ![]() ![]() |
Jak chcesz wysłać output do przeglądarki przed zakończeniem skryptu, użyj flush.
-------------------- SithTemplate
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 24.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Też nie działa
![]() Próbowałem umieścić przed nim ob_flush ale też nie działa... Część skryptu jest taka:
Jak widzicie Apache musi zostać zrestartowany aby załapać że niema już pliku blocked.conf - który ma regułe blokady konta użytkownika (pokazuje na jego stronie 403). To dzieje sie przy odblokowaniu konta użytkownika. Wsadziłem tam przekierowanie na wait.php - ale bez skutku... Jak zrobić żeby apache wczytał ponownie configi w jakiś inny sposób? Ten post edytował neuromancer 13.05.2007, 21:30:22 -------------------- localhost: Apache 2.0.59, PHP 5.2.1, MySQL 4.1.22
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 13.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Szkoda, że kompletnie zignorowałeś mojego poprzedniego posta. No nic... rozwinę trochę myśl, to może bardziej się zainteresujesz pomysłem.
Po pierwsze nadawanie uprawnień Apache wykorzystywanemu "globalnie" takich by byl w stanie modyfikować pliki konfiguracyjne jest w moim mniemaniu dosyć niebezpieczne i unikałbym tego jak ognia. Dlatego właśnie zasugerowałem rozwiązanie, które oparte jest o dwa Apache z różnymi uprawnieniami. Jeden z większymi uprawnieniami działał by jako obsługa części administracyjnej, a drugi jako "globalny" do wszystkiego innego. Ten pierwszy miałby dostęp do plików konfiguracyjnych, a drugi okrojony uprawnieniami tak daleko jak się da. Przy takim rozwiązaniu śmiało mozesz sobie zmieniać ustawienia plików cfg "podrzędnego" apache i restartować go, bez utraty aplikacji administracyjnej. No nic - koniec wstepu do głębszej myśli. Można by było się rozpisać mocniej, ale chyba nie ma to sensu ;-) |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 02:36 |