Strona 2 z 2
Re: Trwałe połączenie z bazą
: pt paź 08, 2004 2:32 pm
autor: wixor
Indianin potrafi obsługiwać wiele żądań wielowątkowo, a już php łączy te wątki w jedną całość. zauważ, że przy php skompilowanym modułowo nie jest tworzonych wiele kopii modułu dla każdego z watków, a tylko odpowiednie funkcje są wywoływane z różnych wątków, zatem PHP utrzymuje wewntrzy licznik połączeń do którego mają dostęp wszystkie skrypty aktualnie wykonywane. przy kompilacji standalone jest ciut gorzej.... php po prostu pamięta, że jest takie a takie połączenie, a już gdy wywołuje się (z innego wątku) funkcja rozpoczynająca wykonanie skryptu, on patrzy sobie co tam w pamięci naskrobał i widzi, że połączenie już jest. Zatem, można kożystać z jednego połączenia wielowątkowo. (proponuje zrobić test - skrypt A robi jednego query-a, czeka n sekund i robi drugiego query-a, a w tym samym czasie odpala się phpmyadmin - na pewno nie nastąpi zablokowanie odpalającego się admina, które nastąpiłoby, gdyby php czekało aż skrypt A zakończy kożystanie z połączenia).
Re: Trwałe połączenie z bazą
: pt paź 08, 2004 6:40 pm
autor: the_foe
wixor pisze:Indianin potrafi obsługiwać wiele żądań wielowątkowo, a już php łączy te wątki w jedną całość. zauważ, że przy php skompilowanym modułowo nie jest tworzonych wiele kopii modułu dla każdego z watków, a tylko odpowiednie funkcje są wywoływane z różnych wątków, zatem PHP utrzymuje wewntrzy licznik połączeń do którego mają dostęp wszystkie skrypty aktualnie wykonywane. przy kompilacji standalone jest ciut gorzej.... php po prostu pamięta, że jest takie a takie połączenie, a już gdy wywołuje się (z innego wątku) funkcja rozpoczynająca wykonanie skryptu, on patrzy sobie co tam w pamięci naskrobał i widzi, że połączenie już jest. Zatem, można kożystać z jednego połączenia wielowątkowo. (proponuje zrobić test - skrypt A robi jednego query-a, czeka n sekund i robi drugiego query-a, a w tym samym czasie odpala się phpmyadmin - na pewno nie nastąpi zablokowanie odpalającego się admina, które nastąpiłoby, gdyby php czekało aż skrypt A zakończy kożystanie z połączenia).
ja bym to raczej nazwal wieloprocerowościa. Apache potrafi utrzymac wiele, niech juz bedzie, watkow (procesow), ale nie slyszalem, zeby potrafil przekazywac wyniki miedzy procesami. Inaczej mowiac kiedy dwoch klientow poprosi o to samo serwer zamiast skopiowac proces powtorzy go dwa razy.
Apache nei nadaje sie do profesjonalnych zastosowan, jesli ktos chce cos zrobic duzego na PHP instaluje go pod IIS. Nie wyobrazam sobie serwera ktory by udzwignal dajmy na to onet.pl pod Apache.
Re: Trwałe połączenie z bazą
: sob paź 09, 2004 8:26 am
autor: wixor
on, owszem tworzy noew procesy i nie przekazuje wyników między nimi - php to załatwia - zauważ, że to tak właściwie są wątki (chociaż na linuxie to bez różnicy) - one mają tą samą przestrzeń adresową. czyli zmienne jednego wątku są dostępne dla drugiego. i ten sposób, kopiowanie danych między wątkami... przestaje istnieć - wszystkie dane są widoczne dla wszystkich.
Re: Trwałe połączenie z bazą
: pn paź 11, 2004 9:28 am
autor: JaroW
Z zaciekawieniem czytam wszystkie uwagi ale wydaje mi sie, że odpowiedzi na nurtujące mnie pytanie nadal nie znam.
Może jeszcze raz trochę inaczej!
Kiedy i w jaki sposób jest zamykane trwałe połączenie z bazą utworzone funkcją mysql_pconnect()? No bo w jakiś sposów chyba jest jednak zamykane?
Re: Trwałe połączenie z bazą
: pn paź 11, 2004 12:35 pm
autor: wixor
oj, chyba jednak nie.......
nie czytasz wystarczająco uważnie.
Re: Trwałe połączenie z bazą
: pn paź 11, 2004 2:40 pm
autor: Stig
JaroW pisze:Kiedy i w jaki sposób jest zamykane trwałe połączenie z bazą utworzone funkcją mysql_pconnect()? No bo w jakiś sposów chyba jest jednak zamykane?
Połączenie stałe nie jest zamykane. Nie da się tego zrobić za pomocą funkcji mysql_close() oraz w żaden inny sposób. To jest właśnie zaleta połączenia stałego - nigdy nie zostaje zerwane!
Re: Trwałe połączenie z bazą
: wt paź 12, 2004 10:27 am
autor: JaroW
OK. Połączenie trwałe nigdy nie jest zamykane. Ale na jakiej podstawie następuje wykorzystanie już ustanowionego połączenia a kiedy zostanie utworzone nowe?
Jest taki kod:
Kod: Zaznacz cały
...
$link=mysql_pconnect($host,$user,$password);
mysql_select_db($basename,$link);
mysql_query($sql,$link);
...
Czy tylko odświeżając taką stronę powinna ona korzystać z raz ustanowionego połączenia?
Od razu wyjaśnię, że u mnie niestety tak to nie działa. Wydaje się, że w sposób losowy, kilka razy wykorzysta połączenie już istniejące a potem utworzy sobie nowe. A stare wisi i po jakimś czasie serwer się zatyka.
Re: Trwałe połączenie z bazą
: wt paź 12, 2004 2:32 pm
autor: Stig
JaroW pisze:OK. Połączenie trwałe nigdy nie jest zamykane. Ale na jakiej podstawie następuje wykorzystanie już ustanowionego połączenia a kiedy zostanie utworzone nowe?
Jest taki kod:
Kod: Zaznacz cały
...
$link=mysql_pconnect($host,$user,$password);
mysql_select_db($basename,$link);
mysql_query($sql,$link);
...
Czy tylko odświeżając taką stronę powinna ona korzystać z raz ustanowionego połączenia?
Od razu wyjaśnię, że u mnie niestety tak to nie działa. Wydaje się, że w sposób losowy, kilka razy wykorzysta połączenie już istniejące a potem utworzy sobie nowe. A stare wisi i po jakimś czasie serwer się zatyka.
Przeczytaj uważnie wszystkie posty. Wynika z nich, w sposób jasny, że problem stoi po stronie serwera... Nie ma tak, że sobie losuje ile razy skorzysta z istniejącego stałego połączenia i kiedy utworzy nowe. Napiszę jeszcze raz: przeczytaj uważnie(!!!) wszystkie posty - tam masz dokładnie wyjaśnione![/b]