Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Doctrine, wydajność -> duże projekty, Czy mimo wysokiego zapotrzebowania na pamieć warto używać Doctrine?
Sajrox
post
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Witam,

Od kilku dni szukam coś o Doctrine oraz zastosowania tej biblioteki w dużych projektach.
Generalnie chodzi o to że Doctrine zużywa ponad 4 razy więcej pamięci niż użycie standardowych funkcji w php.

Na co dzień używam swojej własnej biblioteki do obsługi bazy danych z wykorzystaniem PDO i średnio zużycie pamięci wynosi około 1400 kb.
Po zainstalowaniu Doctrine zużycie pamięci przy jednym zapytaniu SELECT wzrosło do około 4500 kb.

Co o tym sądzicie, jak może to wpłynąć na duży projekt z dużym ruchem. Niestety 3 krotne zwiększenie zużycie pamięci może szybko spowodować że serwer może nie wyrobić.

Chciałbym się zapytać o wasze zdanie w tej sprawie, czy mimo tego Doctrone można śmiało używać w dużych projektach (także małych) bez zamartwiania się że serwer może nie dać rady ?

Wydaje mi się że przy np 1000 użytkownikach mogą być już problemy gdyż 4500 kb x 1000 = ok 4 GB.

Oczywiście wiem że można zastosować cachowanie, jednak tutaj chciałbym to wykluczyć i podyskutować o zastosowaniu Doctrone bez cache i innych dopalaczy.

Ciągle się wacham aby na stałe zacząć używać tej biblioteki.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sajrox
post
Post #2





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

Ostrzeżenie: (0%)
-----


murwazy dzięki wielkie. Właśnie o to mi chodziło. Już kilka dni nad tym stercze i po prostu źle zrozumiałem dokumentację.

Mam tylko jeden problem. Po użyciu cache mimo upłynięcia czasu dalej pobiera z cache:
Nawet po kilkunastu minutach ciągle widzę wersję pobraną z cache.

  1. $manager->setAttribute(Doctrine::ATTR_RESULT_CACHE_LIFESPAN, 10);
  2.  


Dodatkowo we wszystkich zapytaniach w skrypcie typu:
  1. $q = new Doctrine_Query();
  2. $q ->from('Tabela')
  3. ->where('id=?', 1);
  4.  
  5. $rows = $q->fetchArray();


Jest stosowane cache mimo tego że nie użyłem tutaj:
  1. $q ->setHydrationMode(Doctrine::HYDRATE_ARRAY)
  2. ->useResultCache(true);
  3.  
  4. $array = $q->execute();



Chciałbym aby cache było używane tylko tam gdzie zastosuję kod podany wyżej oraz czas podany w "Doctrine::ATTR_RESULT_CACHE_LIFESPAN" był brany pod uwagę.

Niestety dokumentacja za dużo tutaj nie wnosi (IMG:style_emoticons/default/sad.gif)

edit
-------
Zauwazyłem że w bazie w polu "expire" zamiast normalnego czasu mam: 0000-00-00 00:00:00

Ten post edytował Sajrox 11.08.2009, 22:59:30
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.12.2025 - 05:21