radone
22.12.2009, 18:10:22
Witam,
mam problem z którym nie mogę sobie poradzić. Potrzebuje zapisać do kesza pewne dane za pomocą metody eaccelerator_put(). Wszystko prawie działa mi poprawnie, załóżmy ze mam plik index,php w public_html i w nim kawałek kodu:
eaccelerator_put( 'klucz', 'wartosc', 3600);
i na końcu gdzieś pobieram z kesza informacje eaccelerator_get('klucz');
Tak jak pisalem wszystko działa pięknie, ale ... mam rowniez skrypt w shell'u ktory jest wykonywany co kilka minut, ten skrypt odpala co jakiś czas plik np. index2.php w ktorym znajduje się metoda eaccelerator_put( 'klucz', 'wartosc', 3600); ktora wstawia do kesza dane. Problem pojawia się w momencie kiedy te dane sa wstawiane, z loga wynika ze operacje się udają i dane są zapisywane do kesza, lecz jak juz odpale plik index.php - tradycyjnie poprzez przeglądarkę to już tych danych tam nie ma ... zwraca pustkę i jak metodą eaccelerator_list_keys() wypiszę wszystkie klucze które są zapisane do kesza to tych nowych tam nie ma ... tak jakby jakaś przestrzeń nazw i w innej części kesza się to zapisuje ?
Ma ktoś z tym jakieś doświadczenie lub pomysł jak to pokonać ?
erix
22.12.2009, 18:57:46
Mhmm, to też zależy od tego, w jaki sposób są oba skrypty odpalane.
W dokumentacji eAccelerator jest zaznaczone, że interpreter musi być zainstalowany albo jako aplikacja FastCGI, albo jako moduł SAPI serwera. Jeśli wykonujesz przez powłokę bezpośrednio z poziomu interpretera, korzysta on z pamięci innej instancji interpretera.
Dlatego nie można polegać na tym w 100%. Idealne byłoby użycie tutaj memcached, do którego podłączają się wszystkie interpretery niezależnie od procesu.
Reasumując - spróbuj wykonywać skrypt z powłoki nie przez php..., tylko przez wget i URL do tego skryptu (ważne, aby się podłączyć do tej samej przestrzeni pamięci z obu wywołań).
radone
22.12.2009, 20:51:24
dzięki za odpowiedz ... jak odpalam jako wget to wszystko dziala prawidlowo ... czy da się coś z tym zrobić, nie chce odpalać tego jako wget, bo jak bedzie problem z łączem to skrypt się nie wykona ...
ActivePlayer
22.12.2009, 21:27:57
jesli na tej samej maszynie jest wywolanie lokalne oraz serwer dns, to nie bedzie problemów nawet w przypadku gdy łącze padnie bo serwer odwoła się do swojego ip
jotojo
1.03.2010, 00:41:05
podłącze się do tematu..
mam podobną sytuację i chyba kombinuje jak radone...
i spełnia warunki jak pisze ActivePlayer, ale jednak jak jest przerwa w serwerze to przerywa działanie i nie wykonuje się skrypt.
hmm, nie wiem czemu... może nie tu tkwi problem, może coś w skrypcie, ech już nie wiem sam.
Bez szczegółowego opisu się za wiele nie da powiedzieć...
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.