![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Na początek prośba do moderatorów by rozdzielić wątek na dwa.
Cytat Chodzi ci o JEE czy nie trafilem, jesli mozesz opisz na co sie przerzuciles z jakich powodow jakie ma wady i zalety w poprowaniu do php twoje nowe narzedzie Osobiście jestem w trakcie "przesiadki" na JEE i w żadnym wypadku nie można moich wypowiedzi traktować tutaj jako wypowiedzi kogoś kto ma z tą platformą spore obycie. Prosiłeś o wypisanie wad i zalet tej platformy względem PHP tak więc i takie zestawienie znajdziesz poniżej, miej jednak na uwadze, że jak już wspomniałem JEE (a nawet i wiele elementów JSE) nie jest mi tak dobrze znaną technologią jak PHP, które znam od dobrych kilku lat. Na pewno z wielu wad/błędnych rozwiązań nie zdaję sobie nawet sprawy (brak wystarczającego doświadczenia), a jest ich na pewno cała masa - jak w każdym języku/platformie, szczególnie takiej która swoje początki miała w połowie lat 90 i dbała o wsteczną kompatybilność (to akurat zaleta) kosztem pewnych decyzji/rozwiązań (np. typy generyczne będące na dobrą sprawę jedynie lukrem składniowym). Subiektywna lista: Język:
Platforma:
Tych punktów mogłoby tutaj być więcej. Ale PHP nie jest wcale jakimś niewyobrażalnym badziewiem. Jak każdy język ma spore możliwości, a w dobrych rękach można w nim stworzyć na prawdę świetne projekty. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
A po co Ci "locki" w PHP gdy chcesz skorzystać z memcache?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 14 Dołączył: 8.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
A po co Ci "locki" w PHP gdy chcesz skorzystać z memcache? masz jakis wpis w memcache. Ma on waznosc na 10 minut. nastepnie x uzytkownikow (dajmy na to 100) akurat wchodzi w tym samym momencie na twoja strone, i potrzebuje tego wpisu w memcache. Poniewaz sie przedawnil, probuja go utworzyc od nowa. poniewaz kazdy request dziala w oddzielnym wątku, i robia to mniej wiecej w tym samym momencie, nie wiedzą o sobie nawzajem, ze rownolegle requesty rowniez probuja utworzyc ten wpis na nowo. leci 1000 zapytan do bazy danych, a nastepnie 1000 requestów zapisuje te dane w danej komórce pamieci. Jezeli zapytanie do bazy danych trwa 500ms, to przez 500ms pomimo ze zapytanie juz jest wykonywane, kolejne requesty ktore wchodza na strone i żądają tej komorki pamieci memcache, robią swoje requesty od nowa, bo mysla ze komorka pamieci jest pusta - pierwszy request ktory wykonal zapytanie majace na celu odswiezyc cache, jeszcze nie zakonczyl swojego dzialania. I tak w kolko beda sie odpalac kolejne zapytania dopoki pierwszy request nie zakonczy zapytania i nie zapisze go w memcache. Zazwyczaj cachuje sie duze partie danych wiec calkiem prawdopodobne ze to zapytanie bedzie trwalo dosc długo. Z tego co widzialem i co jest w miare logiczne, aby uniknac tej sytuacji proponują aby swoje zapytania do memcache przekonstruowac tak ze każdy request zanim zacznie to zapytanie do bazy danych czy cokolwiek innego co ma zdobyc dane dla odswiezenia memcache, sprawdza czy zostala ustawiona flaga ze juz ktos to odswieza - zazwyczaj jest to np dodatkowa zmienna w memcache o jakiejs tam nazwie. To nawet dzialajaca solucja ale i tak nie do konca rozwiazuje problem, jesli ten pierwszy skrypt ktory zalozyl lock sie zawiesi, blokada nie zostanie zdjęta. Po za tym wątki moga zostac przelaczone w dowolnym momencie - np pierwszy proces ustawia flage lock, nastepnie system zatrzymuje ten watek i uruchamia drugi - drugi tez chce odswiezyc cache ale widzi ze flaga jest ustawiona więc czeka sleepem lub pętlą, zajmuje procesor, nastepnie przeskakuje do trzeciego.. tysiecznego i na koncu wraca do pierwszego ktory dopiero wtedy moze zaaktualizowac cache i dokonczyc prace i odblokowac reszte wątkow. gdyby byla sekcja krytyczna to nie byloby takiego problemu bo caly kod wykonalby sie za jednym razem bez przeskakiwania do innego wątku. po za tym jest to smierdzące obejscie niedorobki w jezyku ktore powinno byc rozwiazane przez developerow php, ewentualnie memcache, a nie przez programistow korzystajacych z tych modułów. skoro php nie ma mechanizmow programowania wspolbieznego, to powinien byc zrobiony tak by programisci nie musieli sie wspolbieznoscia przejmowac. Ten post edytował Orzeszekk 24.02.2012, 13:51:00 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 14:51 |