Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: pamiec wspoldzielona...
Forum PHP.pl > Forum > PHP > Pro > Archiwum Pro
lolo
Czesc.

Strasznie dawno juz nic nie pisalem na tym forum....

Macie jakies doswiadczenia z pamiecia wspoldzielona w php? Uzywaliscie tego do czegos kiedys, moze tylko eksperymentowaliscie? Opiszcie to tutaj.
Ja np. znalazlem fajny skrypt, ktory cacheuje strony w pamieci wspoldzielonej - przez to sa super szyko wyswietlane. Jezeli macie jakies inne znaleziska albo tylko teoretyczne pomysly, to podzielcie sie.

Pozdrawiam,

Olek

P.S. Jakby sie komus ten skrypt spodobal, to nie wiem gdzie on jest, ale znalazlem go na googlach po wpisaniu >>"shared memory" php<<. Byl gdzies na poczatku
binio
Cytat(lolo @ 2004-12-27 14:24:52)
Ja np. znalazlem fajny skrypt, ktory cacheuje strony w pamieci wspoldzielonej - przez to sa super szyko wyswietlane.

Hmm, szukałem o tym informacji ale niewiele znalazłem.
Możesz pokazać to cudo co znalazłeś ?
Chetnie pobawiłbym się z tym ...
lolo
Przeciez napisalem, ze trzeba tylko w googlach wpisac "shared memory" php. I wcisnac szczesliwy traf...
binio
Cytat(lolo @ 2004-12-28 11:44:23)
Przeciez napisalem, ze trzeba tylko w googlach wpisac "shared memory" php. I wcisnac szczesliwy traf...

Sorki nie wiem czemu ale nie zauwazylem tego wczesniej .. sad.gif
Jabol
nie wiem jak dzisiaj, ale za pamiętnych czasów, kiedy się tym zajmowałem (przed ok. rokiem) było to rozszerzenie na windowsie raczej niedostępne (potrzebne były jakieś dodatkowe biblioteki), na linuksie natomiast nie jest to opcja defaultowa, więc zapewne i tutaj nie jest wszędzie dostępne. Podejrzewam zresztą, że w większości przypadków nie jest, ale tutaj, przyznaje się, nie wiem jak jest.
Ogólnie rzecz fajna, ale podobne rzeczy można uzyskać za pomocą plików (ciutkę wolniejsze, ale jednak działa). I chyba jednak ku takiemu rozwiązaniu bym się skłaniał, gdyż jest dużo pewniejsze. (tym bardziej, że raczej nie wygospodarujesz dak dużej i elastycznej shared memory jak system plików).
Imperior
Zawsze myślałem, że pamieć jest najodowiedniejszym miejscem do keszowania...
A odnośnie windowsa, to to będzie działać tylko, kiedy php jest jako moduł np. apacha.
lolo
A poza tym to dopiero od Windowsa 2000 bedzie dzialac. Przedtem nie bylo w windzie pamieci wspoldzielonej...
Ale nie jest to wielki problem, bo zawsze mozna napisac to specjalnie pod linuxa. W configu bedzie mozna zmieniac np.
Na tej stronce o ktorej mowilem, byl chyba taki skrypt do wykrywania czy jest mozliwosac uzycia SM. System sam moglby sie do tego dopsowywac...
hawk
A nie lepiej zrobić po prostu tmpfs albo coś w tym stylu?
lolo
Po krotkim googlowaniu dochodze do wniosku, ze jest to dobre rozwiazanie. Pewnie latiwejsze w obsludze nawet niz SM takie typowe. Bo mozna jednego skryptu uzywac do komunikacji, ktory albo bedzie uzywal tmpfs albo normalnego, dyskowego systemu plikow.
Problem tylko w tym ze tmpfs dziala juz naprawde wylacznie na linuksie, a funkcje SM zadzialaja tez pod niektorymi windami. Poza tym zeby uzywac tmpfs'a trzeba go najpierw zamontowac, co wymaga exec'a (chyba innej molziwosci nie ma?), a mozna chciec go unikac calkiem... Ponadto montowac moze tylko root (w wiekszosci przypadkow), wiec nie uzyjemy tego na darmowych/uczelnianych serwerach... : (
dooshek
Cytat(lolo @ 2005-01-02 20:47:36)
Po krotkim googlowaniu dochodze do wniosku, ze jest to dobre rozwiazanie. Pewnie latiwejsze w obsludze nawet niz SM takie typowe. Bo mozna jednego skryptu uzywac do komunikacji, ktory albo bedzie uzywal tmpfs albo normalnego, dyskowego systemu plikow.
Problem tylko w tym ze tmpfs dziala juz naprawde wylacznie na linuksie, a funkcje SM zadzialaja tez pod niektorymi windami. Poza tym zeby uzywac tmpfs'a trzeba go najpierw zamontowac, co wymaga exec'a (chyba innej molziwosci nie ma?), a mozna chciec go unikac calkiem... Ponadto montowac moze tylko root (w wiekszosci przypadkow), wiec nie uzyjemy tego na darmowych/uczelnianych serwerach... : (

Jakis czas temu probowalismy tego uzywac w dosyc zlozonej aplikacji wlasnie do cachowania i niestety moje doswiadczenia z shared memory w php sa przykre. Mozliwe, ze teraz costam poprawili ale generalnie w php 4.1 bodajze (to wtedy wlasnie probowalismy) bylo to delikatnie mowiac... popsute winksmiley.jpg

Chodzi o to, ze trzeba jakos tworzyc bloki pamieci wspoldzielonej, rezerwowac miejsce w pamieci - wiec trzeba wiedziec ile <> danych potrzebujemy przechowywac. My tworzylismy kilka/kilkaset blokow - to jest mozliwe - natomiast pozniej usuniecie ich nie za bardzo. Dobrze tego nie pamietam ale byl z tym problem. Do tego aby 2 procesy php nie zapisywaly do tego samego kawalka pamieci trzeba to jakos blokowac... Najlepiej wiec skorzystac z semaforow ktore tez sa dostepne w php ale znowu implementacja ich jest lipna. Jak juz cos wymodzilismy z uzyciem shared memory i semaforow to okazalo sie, ze wszystko szlag trafia przy wiekszym obciazeniu na 2 procesorowej maszynie... (prawdopodobnie chodzi o zle ustawianie/kasowanie semaforow)

Dodam tylko jeszcze, ze wszystko to robilem pod linuxem - z winda nie mam doswiadczen.

Moze teraz sie cos zmienilo ale nie sadze bo przewaznie szukalem w changelogach od php od tamtego czasu jakiejs wzmianki o poprawkach... Mozliwe, ze jednak cos przeoczylem...

Wydaje mi sie, ze do cachowania czasami lepiej uzyc bazy i tabel HEAP - one w koncu tez trzymaja w pamieci swoje dane. W MySQL 4.1 bodajze albo w 5.0 wprowadzili nawet mozliwosc zakladania kluczy w HEAPach wiec powinno to dodatkowo przyspieszyc ich dzialanie.
Jabol
a ja jeszcze raz odpowiem, robiłem testy prędkości - shared mem i system plików i różnice były MINIMALNE.
System plików można natomiast świetnie dostosować do własnych wymagań (nazwy plików, katalogi, itp...)...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.