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
mrok
post
Post #2





Grupa: Zarejestrowani
Postów: 258
Pomógł: 17
Dołączył: 22.05.2007

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


Udało sie komuś wyłączyć cache??

W większości lini z DQL dopisałem sobie
  1. useResultCache(true)
przed execute() lub fatchOne().
Korzystam z Sqlite

Odpaliłem kilka razy to co napisałem (a sporo tego było) i zanotowałem czas wykonania.

Chciałem wyłączyc cache zeby porównać i ocenić jakie dał korzyści. Myślałem że wystarczy samo zakomentowanie linii
  1. $oManager->setAttribute(Doctrine::ATTR_RESULT_CACHE, $oCacheDriver);

i tu zonk - w wszystkich liniach DQL pozostało useResultCache(true) co skutkuje wyjątkiem
Cytat
Doctrine_Exception: Result Cache driver not initialized


kolejny znakomity pomysł
useResultCache(true)->useResultCache(false)
i kolejna porazka, w doctrine dopuszczalne jest tylko true lub cos implementujące Doctrine_Cache_Interface
  1. public function useResultCache($driver = true, $timeToLive = null)
  2. {
  3. if ($driver !== null && $driver !== true && ! ($driver instanceOf Doctrine_Cache_Interface)) {
  4. $msg = 'First argument should be instance of Doctrine_Cache_Interface or null.';
  5. throw new Doctrine_Query_Exception($msg);
  6. }
  7. $this->_resultCache = $driver;
  8.  
  9. if ($timeToLive !== null) {
  10. $this->setResultCacheLifeSpan($timeToLive);
  11. }
  12. return $this;
  13. }


Kolejny natchniony pomysł
  1. $manager->setAttribute(Doctrine::ATTR_RESULT_CACHE_LIFESPAN, 0);

fajnie cache nie działa, ale do bazy sa zapisywane dane (czyli takie testy sa na nic).

Wie ktoś może jak wyłączyć cache bez konieczności usuwania
  1. useResultCache(true)
z każdego DQL?

//EDIT
jak ktoś wie jak wyłaczyć cache to proszę o info, a ja mogę przeciez wykomentowac odpowiednie linie w samym doctrine i robic sobie testy (IMG:style_emoticons/default/winksmiley.jpg) ))) sorrki za problem

Ten post edytował mrok 11.08.2009, 17:46:11
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 - 20:50