Trwałe połączenie z bazą
Re: Trwałe połączenie z bazą
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ą
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.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).
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ą
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ą
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?
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ą
oj, chyba jednak nie.......
nie czytasz wystarczająco uważnie.
nie czytasz wystarczająco uważnie.
Re: Trwałe połączenie z bazą
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!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?
Re: Trwałe połączenie z bazą
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:
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.
Jest taki kod:
Kod: Zaznacz cały
...
$link=mysql_pconnect($host,$user,$password);
mysql_select_db($basename,$link);
mysql_query($sql,$link);
...
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ą
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]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:Czy tylko odświeżając taką stronę powinna ona korzystać z raz ustanowionego połączenia?Kod: Zaznacz cały
... $link=mysql_pconnect($host,$user,$password); mysql_select_db($basename,$link); mysql_query($sql,$link); ...
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.
