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%)
-----


Też nie działa (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Próbowałem umieścić przed nim ob_flush ale też nie działa...

Część skryptu jest taka:
  1. <?php
  2. //MySQL
  3. mysql_db_query($srvdb, "UPDATE `regs` SET `lock` = 'nie' WHERE `id` = '$actid'");
  4. mysql_db_query('mysql', "UPDATE `db` SET `Select_priv` = 'Y', `Insert_priv` = 'Y', `Update_priv` = 'Y', `Delete_priv` = 'Y', `Create_priv` = 'Y', `Drop_priv` = 'Y', `Index_priv` = 'Y', `Alter_priv` = 'Y', `Create_tmp_table_priv` = 'Y', `Lock_tables_priv` = 'Y' WHERE `User` = '$actuser'");
  5. mysql_query('FLUSH PRIVILEGES');
  6. //FTP
  7. $conn_id = ftp_connect($servdomain, $ftpp, 10); 
  8. $login_admin = ftp_login($conn_id, $admuser, $admpass);
  9. ftp_site ($conn_id, "enable $actuser");
  10. ftp_quit($conn_id);
  11. //Apache
  12. unlink("$confdir/users/$actuser/blocked.conf");
  13. header("Location: wait.php");
  14. flush();
  15. sleep('5');
  16. system("net stop apache2 & net start apache2");
  17. ?>

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
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: 4.10.2025 - 11:09