Prace nad Core osiągnęły pewien punkt zwrotny (w żadnym wypadku nie zostały przerwane, choć może cisza w repozytorium mogłaby to sugerować). Stwierdziliśmy z larkiem że trzeba przeorganizować i przepisać całe Core, aby móc je efektywnie rozwijać. Co też zaczeliśmy czynić. Przepisywanie zaczeliśmy od tego, od czego powinniśmy: od gadania :)

Postawiliśmy sobie prywatne wiki, gdzie spisujemy koncepcje i pomysły na to jak ma to działać i wyglądać. Zmieni się dosłownie wszystko - poza założeniami: ma być lekkie i szybkie. Będzie oczywiście miało dotychczasową funkcjonalność, będzie miało też obiecywaną dla wersji 0.5.0 funkcjonalność (galerie etc).

Zmieni się system szablonów (największe szanse w tej chwili ma system Open Power Template, w skrócie OPT). W tej kwestii jedno jest pewne: na pewno nie będzie to smarty, ponieważ obydwaj z larkiem posiadamy na smartowstręt :)

Zmienią się też wymagania systemowe (jak zresztą niketóre osoby, sprawdzające OPTy, mogły zauważyć) dla Core. Podstawą będzie: PHP 5.0 + PECLowe PDO lub też wersja PHP 5.1.x, gdzie PDO jest wbudowane.

Innym wymaganiem będzie wersja MySQL - od teraz wymagać będziemy wersji >= 4.1. Choć mam chrapkę na 5.0 ;) Widoki i triggery etc.. mniam… Niestety, o ile PHP 5.0.x jest coraz popularniejsze na komercyjnych serwerach, o tyle MySQL w tejże wersji niestety jest zbyt daleko w tyle. Szkoda.

Nie wiem na ile się uda, ale chciałbym móc puścić nowe Core na UTF-8 (to, jak dla mnie, jedna z ważniejszych przyczyn przejścia na MySQL 4.1.x, które intensywniej wspiera to kodowanie).

No i oczywiście korzystanie z PHP 5.x nie jest podyktowane tylko modą i PDO - które przecież też można mieć do wersji 4.x. Większym problemem jest tutaj duuuuża różnica w “obiektówce” tychże wersji PHP. W PHP 5.x model obiektowy został przepisany od nowa, zaimplementowany w zupełnie inny sposób, i chcielibyśmy skorzystać z jego dobrodziejstw. Co też zaczęliśmy już robić… :)

Jeszcze jednym powodem do przepisania całości jest to, że stara wersja, wraz ze starym systemem szablonów, kiepsko się nadaje do dodania obsługi pluginów do systemu. A w nowej będziemy starali sie to robić tak, żeby tą obsługę mozna było jak najszybciej dodać - umożliwi to niec łatwiejszy rozwój całości systemu.


Tak, właśnie takie coś sobie wymyśliłem jak siedziałem wczoraj w sądzie więzieniu. Do dyspozycji miałem:

  • tradycyjny interfejs proceduralny mysql_*
  • nowy w php5 interfejs mysqli_ (proceduralny)
  • j.w. mysqli, ale obiektowo (OOP)
  • uniwersalny interfejs (w wersjach PHP < 5.1.0 dostępny poprzez PECL) PDO

Niestety, o ile w wersji Windows-owej w pracy miałem wersję PHP 5.1.0beta3 (z wbudowanym PDO), o tyle w domu i na serwerze na którym stoi urzenia jest starsze, stabilne PHP 5.0.5, na którym wersja PECL-owa PDO nie chce mi działać. Ale też jakoś specjalnie nie walczyłem, żeby zadziałało. Nie chce mi się :)

Wyniki, wraz z testami online, można obejrzeć pod urzenia.net/wp-content/mysql_test/, a żródła plików: urzenia.net/wp-content/mysql_test/sources/.

Dostępne tam są, na dole, 3 linki do wyników jakie uzyskałem na 3 kompach, na których chciało mi się bawić w testy. Najbardziej mnie zszokowało porównanie z P4 2.4 GHZ i AMD64… heheh. Nie ma to jak 64 bity :) Do każdego z linków jest którki opis, na jakim sprzęcie były wykonywane testy, jaki soft etc.

Moje podsumowanie: nie ma znaczenia, którego z interfejsów się użyje. Różnice w wydajności między nimi są tak niewielkie, że imo pomijalne. Dla mnie najwygodniejszy chwilowo się wydaje MySQLi, choć zdecydowanie PDO zasługuje na uwagę. Niestety, na tą chwilę PHP5 (nie mówiąc o wszechdostępności PDO, związanej z nieistnieniem wersji stabilnej/końcowej PHP5.1 i nie działaniem - u mnie - wersji PECL-owej) nie jest jeszcze tak rozpowszechnione jak bym chciał, ze względu na niekompatybilność części softu, dostosowanej do możliwości i błędów ;) starszej wersji, tj. PHP4. Choć w wolnych chwilach prawdopodobnie zacznę przerabiać Core CMS na ‘międzymordzie’ (interfejs) MySQLi… :)

Niedługo też zostaną wznowione prace nad telefonami, które też może doczekają się przejścia na MySQLi, jako że następny hosting będzie u providera, który oferuje PHP5 :) Które to PHP coraz bardziej podbija moje serce (w stosunku do PHP4, nie w ogólności, gdzie python króluje… :) ).

Wszelkie uwagi i ew. zgłoszenia błędów procedury testowej proszę zostawiać w komentarzach - postaram się nimi zająć tak szybko jak się da :)