2013-04-13 12 views
7

Mam aplikację, która współdziała z bazą danych. Nagle i od czasu do czasu strony wyświetlają mi błąd w mojej przeglądarce internetowej. Co ważniejsze, dostęp do strony localhost powoduje wygenerowanie alertu dotyczącego avast.Nieoczekiwane zresetowanie serwera za pomocą php i apache

Jeśli odświeżam strony przy użyciu Ctrl+R, zdarza się to sporadycznie. PHP nie pokazuje żadnych komunikatów o błędach i wygląda na to, że serwer potrzebuje więcej czasu na odpowiedź niż zwykle.

Używam wampla z apache 2.4, PHP 5.4.3. Nie mam pojęcia, gdzie rozpocząć debugowanie lub gdzie jest problem.

[Sun May 13 13:01:14 2012] [warn] Init: Session Cache is not configured [hint: SSLSessionCache] 
[Sun May 13 13:01:14 2012] [notice] Apache/2.2.22 (Win32) mod_ssl/2.2.22 OpenSSL/0.9.8x configured -- resuming normal operations 
[Sun May 13 13:01:14 2012] [notice] Server built: May 13 2012 12:51:11 
[Sun May 13 13:01:14 2012] [notice] Parent: Created child process 3660 
Apache server interrupted... 
arn] Init: Session Cache is not configured [hint: SSLSessionCache] 
[Sun May 13 13:01:15 2012] [notice] Child 3660: Child process is running 
[Sun May 13 13:01:15 2012] [notice] Child 3660: Acquired the start mutex. 
[Sun May 13 13:01:15 2012] [notice] Child 3660: Starting 64 worker threads. 
[Sun May 13 13:01:15 2012] [notice] Child 3660: Starting thread to listen on port 80. 
[Sun May 13 13:01:15 2012] [notice] Child 3660: Starting thread to listen on port 80. 
[Sun May 13 13:01:28 2012] [notice] Parent: Received shutdown signal -- Shutting down the server. 
[Sun May 13 13:01:28 2012] [notice] Child 3660: Exit event signaled. Child process is ending. 
[Sun May 13 13:01:29 2012] [notice] Child 3660: Released the start mutex 
[Sun May 13 13:01:30 2012] [notice] Child 3660: All worker threads have exited. 
[Sun May 13 13:01:30 2012] [notice] Child 3660: Child process is exiting 
[Sun May 13 13:01:30 2012] [notice] Parent: Child process exited successfully. 

UPDATE:

Kiedy 'prośba o połączenie' występuje wtedy, gdy jest używać cachegrind pokazuje częściową listę callstack metod. oznacza, że ​​nie działa cały kod. pokazuje niektóre wywołania require_once i to. następnym razem, jeśli spróbuję ponownie pobrać stronę, strona wykona i wyświetli cały stempel.

Kiedy występuje żądanie połączenia '' pokazuje

18 different functions called in milliseconds (1 runs, 18 shown) 

po ponawiania

220 different functions called in 329 milliseconds (2 runs, 220 shown) 

Nie wiem, dlaczego to pokazano 2 działa. również zajmuje więcej czasu na wykonanie strony. zanim zrobił to mniej niż 100 ms.

+0

co mówią dzienniki apache? – mkjasinski

+0

avast jak w programie antywirusowym ?? crikey, co mówi ta wiadomość? – CodeMonkey

+0

@CodeMonkey yes the anti virus. mówi "złośliwy URL został zablokowany" – varuog

Odpowiedz

0

zrestartować Apache poprzez PHP użyć kodu następczych w PHP

exec('/etc/init.d/httpd graceful'); 

a także spojrzeć w manual ... i zmień ścieżkę do httpd

+3

Na op działa WAMP. – nate

+2

i na marginesie, jeśli twój serwer pozwala na ponowne uruchomienie poprzez wywołanie dowolnego skryptu, który zwykle musi być uruchamiany przez administratora z jego wnętrza, byłbym bardzo przestraszony ..) – Doon

0

Zmień apache słuchać portu od 80 do 8080 plik httpd.conf, zmiana listen 80 do listen 8080 i restart apache

0

ponownie spróbuj wyłączyć chwilowo program antywirusowy

0

Może to nie jest właściwe rozwiązanie, ale dlaczego nie spróbować innej wersji WAMP, czy może ustawić poprawny zegar systemowy ?. Czy próbowałeś uruchomić Apache w minimalnej konfiguracji? Możesz wyłączyć wszystkie rozszerzenia i moduły (np. Php) i jeśli serwer WWW będzie działać zgodnie z oczekiwaniami, możesz kolejno moduły. Nie wiem o twoim środowisku, ale możesz także spróbować zmienić liczbę wątków roboczych i inne wartości na minimalną. Założę się, że to nie pomoże, ale przynajmniej spróbujesz.

1
  1. Zrestartuj komputer i zamknij/wyłącz wszystkie uruchomione aplikacje, w tym antywirusowe, zachowując tylko minimalny zestaw uruchomionych aplikacji. Zamknij wszystko nawet te aplikacje, które jesteś pewien, nie może ingerować - nigdy nie wiesz ..

  2. Upewnij PHP pokazuje wszystkie błędy/ostrzeżenia:

    error_reporting(E_ALL); 
    ini_set('display_errors', '1'); 
    

upewnij się przejrzeć każdy ostrzeżenia otrzymywać z PHP. To może dać ci wskazówkę.

  1. Spróbuj wyizolować problem. Skomentuj fragment kodu, który podejrzewasz, że powoduje problem. Kontynuuj komentowanie, aż przestaniesz otrzymywać błąd. Następnie zacznij odkomentować, aż znajdziesz problematyczne miejsce. W ten sposób możesz wyizolować problematyczny kod i gdy go zobaczysz, możesz zrozumieć problem.

  2. Dodaj wiele instrukcji, które będą zapisywać do pliku dziennika (lub po prostu echo). Następnie można analizować plik dziennika i zrozumieć, co dzieje się błędu, który punkt pomaga wyizolować problem ...

końcu znajdziesz problematyczny blok kodu i będzie mógł śledzić ten problem. Mam nadzieję, że :)

0

Jeśli masz włączoną opcję mod_security spróbuj wyłączyć i zobacz, czy to samo się dzieje. Czasami możesz mieć nad czujną mod_security, która po prostu pójdzie na http fail (czasami może być tak proste, jak wstawianie danych z ampersand do bazy danych) i nie zapisuje żadnego błędu w dziennikach serwera, co utrudnia rozwiązywanie problemów, brzmi podobnie do tego, czego doświadczasz, wyłączę restart serwera mod_security i zobaczę, czy zachowanie zostało zatrzymane!

0

Na pewno nie masz pętli include/require?

Ten rodzaj pętli sprawia, że ​​PHP pożera zbyt wiele pamięci i apache zabija się, aby tego uniknąć.

A może jakiś błąd 404 pętli ... Ten rodzaj pętli może się zdarzyć, jeśli czasami masz 404 błędy. Oto przykład:

Masz układ z brakującym obrazem, więc powoduje to błąd 404. Aby wyświetlić stronę, błędy 404 dodają układ wokół strony błędu, która zawiera brakujący obraz, co powoduje kolejne 404 błędy.

Nadzieję, że pomaga.

Powiązane problemy