Postgresql 8.2 + Apache + PHP + XP, dziwne opoznienie

0

Mam na XP zainstalowanego lokalnie Apache 2.cos + php 5.2, ktore dzialaja sobie od dluzszego czasu i problemu z nimi nie ma. Ostatnio testowalem frameworka PRADO przy okazji pewnego projektu, ktory chodzic bedzie na postgresie.

Zainstalowalem najnowszego jaki byl, znaczy sie 8.2 i dziala. Problem jest, ze przy odswiezaniu strony, ktora korzysta z bazy - jakkolwiek, czy to caly framework, czy najprostsze zapytanie wprost do bazy(pg_query) strona czeka z zaladowaniem do konca jakies 5s. Na ffoxie efekt jest taki, ze cala w zasadzie tresc jest gotowa po powiedzmy 0.1s (tak wskazuje czas wykonania skryptu) i wszystko widac, natomiast do konca ladowania (czyli znikniecia paska ladowania) trzeba czekac jeszcze te 5s. Zwykle to nie przeszkadza, ale jak na przyklad uzywam TinyMCE to skrypt jego ladowania odpalany jest po zakonczeniu ladowania tej strony - czyli chwile trzeba czekac, zeby sie edytor pokazal.

Ustawienia postgresa zostawilem takie jak sa domyslne. Pytanie brzmi - o co chodzi z tym opoznieniem? Wszystkie zapytania wykonywane wprost z phpPgMyAdmin czy pgAdmin wykonuja sie w czasie normalnym (duuuzo ponizej 1s), zreszta to zadne skomplikowane zapytania. Skrypt wykonuje sie w podobnym czasie. Wiec na co czeka przegladarka?

0

A co mówi Firebug? Tam jest taki moduł do pokazywania czasu ładowania się poszczególnych elementów.

0

Heh, tej czesci Firebuga nie odkrylem ;) Ale nic nie mowi - przykladowy zrzut to:

index.php - 5.04s
po czym wszystkie elementy zamykaja sie w pierwszych 400ms... Poza tym jak strona jest pusta i tylko laczy sie z baza, zeby pobrac jeden wiersz z tabeli, ktora ma jeden wiersz, to efekt jest taki sam - 5s czekania na zakonczenie ladowania strony.

0

Więc może połączenie z bazą nie jest zamykane jak trzeba, a to 5 sekund wynika z jakiegoś timeoutu? (To co pokazuje w tym CMSie licznik czasu ładowania strony niekonicznie musi do końca być prawdą....

0

Hmm... moze i tak. Framework frameworkiem, ale identyczne objawy wystepuja w przypadku takiego kodu:

function getms()
{
	$time = explode(' ', microtime());
	return $time[0] + $time[1]*1000;
}

$start_time = getms();

pg_connect("host=localhost dbname=test user=postgres password=johny");
$result = pg_query("select \"ID\", \"value\" from test");
pg_close(); 

$end_time = getms();
$exec_time = $end_time - $start_time;
echo "Wykonano w $exec_time ms";

gdzie tabela test ma kolumny ID(serial), value(varchar) +
insert into test values (1,'abc')

Wynikiem jest:
Wykonano w 0.021240234375 ms
a Firebug wskazuje 5s odczekiwania na odpowiedz na request.

Ide szukac 5-sekundowego timeoutu w manualu ;)

0

http://pl2.php.net/pg_close funkcja zwraca boola.
Może zobacz jaka jest wartość powrotu u Ciebie?

0

Przy

echo (pg_close() ? 'udane zakonczenie' : 'nieudane zakonczenie')."<br>";

jest 'udane zakonczenie'. O to szlo?

1 użytkowników online, w tym zalogowanych: 0, gości: 1