11 Mar 2009 19:34
TAGS: php polish zend_framework
Pewien czas temu, mówiłem ciepłe słowa o Zend Framework. Okazuje się, że nie jest tak różowo jak się wydaje. A wyrażeniem kluczowym jest tutaj:
64 bit
Na 64 bitowym systemie, z Zend Framework jest wiele problemów. Wymienię ich kilka:
Zend_Search_Lucene
Już taki prosty kod, uruchamiany na 64-bitowym systemie powoduje nieskończone pętle i przekraczanie limitu pamięci:
require_once("Zend/Search/Lucene.php"); $index = Zend_Search_Lucene::open('/path/to/index');
Oczywiście pierwsze co robimy, żeby korzystać z indeksu, to go otwieramy, więc ten moduł (Zend_Search_Lucene) staje się zupełnie niezdatny do użytku.
Co ciekawe, problem jest zgłoszony na bug-trackerze ZF. Doszedłem co trzeba zrobić, żeby rozwiązać problem, wrzuciłem na bug-trackera gotowego (mniej lub bardziej) diffa, ale nikt się nie przejął ani błędem, ani rozwiązaniem.
Zend_Db
Jednym z ważniejszych elementów zawartych w Zend Framework, jest warstwa dostępu do bazy danych. Niestety na 64 bitowym systemie, framework ma jakieś problemy z ograniczaniem wyników przy użyciu metody limit. Nakazanie wyświetlenia rekordów począwszy od rekordu 0, wygenerowało mi zapytanie, które kończyło się na:
LIMIT 98382101, 20;
Powinno być:
LIMIT 0, 20;
Głupia sprawa. Może to poprawili w nowszej wersji, może nie. Nie zgłębiałem tego.
Zend_XmlRpc_Server
Ostatnio pracując nad Wikidot API natrafiłem na paskudny i ukryty błąd w komponencie serwera XML-RPC Zend Framework.
Wszystko niby działa, ale wołanie przez klienta XML-RPC funkcji system.methodHelp, czy system.methodSignature kończy się błędem niedopasowania rządanej metody to sygnatur znanych metod. Na 32 bitach wszystko działa.
Podsumowanie
Zend Framework może się wydawać fajny (mi się wydawał), ale uważajcie mocno przy przenoszeniu kodu z 32 bitów (np. na laptopie) na 64 bity (np. na serwer). Jest SPORO bugów w tym naprawdę dokuczliwe, związane z Zend_Db.
Bug jest ponoć rozwiązany w trunku, co odkryłem ostatnio na ich issue trackerze. Z pobieżnej analizy patcha, wynika, że powinno teraz działać. Musimy to jeszcze sprawdzić w praktyce.
Piotr Gabryjeluk
visit my blog
Post preview:
Close preview