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

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.