Tu jesteś:

blog.trustnet.pl   >  Przeglądasz archiwum kategorii: PHP

Oracle i moduł php

Instalowanie modułu php pdo_oci może przyprawaić administratorów o ból głowy a google podaje wiele rozwiązań, które w więszości dotyczą starszych wersji oracle lub kończą się niepowodzeniem. W przypadku bazy danych Oracle Express Edition i modułu pdo_oci instalacja przebiega w następujący sposób:

  • Ściągamy pakiety: oracle-instantclient-basic-10.2.0.4-1.x86_64.rpm oraz oracle-instantclient-devel-10.2.0.4-1.x86_64.rpm ze strony oracle
  • Instalujemy pakiety:
    rpm -Uvh oracle-instantclient-basic-10.2.0.4-1.x86_64.rpm
    rpm -Uvh oracle-instantclient-devel-10.2.0.4-1.x86_64.rpm
  • W przypadku dystrybucji 64-bit w  katalogach /usr/lib/oracle/10.2.0.4/ oraz /usr/include/oracle/10.2.0.4/ tworzymy symlink client do katalogu client64:
    ln -s client64 client
  • Ściągamy moduł pdo_oci za pomocą pecl-a i rozpakowujemy źródła:
    pecl download PDO_OCI
    tar zxf PDO_OCI-1.0.tgz
  • Po rozpakowaniu źródeł wchodzimy do katalogu PDO_OCI-1.0 i tworzymy środowisko do zbudowania modułu php:
    cd PDO_OCI-1.0 && phpize
  • Budujemy moduł pdo_oci:
    ./configure --with-pdo-oci=instantclient,/usr,10.2.0.4
    make && make test
  • Zbudowany moduł pdo_oci.so kompiujemy do katalogu z modułami php:
    cp modules/pdo_oci.so /usr/lib/php5/extensions
  • Ostatnim etapem jest dodanie biblioteki do php.ini oraz restart serwera www
    echo "extension=pdo_oci.so" >> php.ini
    /etc/init.d/apache2 restart

piątek, 3 Czerwiec, 2011


Zaszufladkowany do Linux, PHP, programowanie, serwery

Trustnet na PHPCon2010

Dnia 21. Maja miał miejsce pierwszy ogólnopolski zlot entuzjastów i programistów języka PHP  – PHPCon Poland 2010 zorganizowany przez PLUG. Oczywiście nie mogło tam zabraknąć silnej reprezentacji programistów  firmy Trustnet .
Zjazd miał miejsce w malowniczej miejscowości Huta Szklana, położonej niedaleko Puszczy Świętokrzyskiej. W ciągu trzech dni mieliśmy przyjemność  uczestniczyć w 12 prelekcjach dotyczących zagadnień związanych zarówno bezpośrednio z projektowaniem i implementacją projektów w PHP, jak i bardziej uniwersalnych tematów traktujących  o prawach autorskich, czy problemie walki ze spamem.

Większość wykładów, może z wyłączeniem prelekcji samego sponsora imprezy, stała na wysokim poziomie. Interesujący wykład dał niejaki Zyx, opowiadając o rozwijanym przez siebie autorskim systemie szablonów – Open Power Template. Projekt w ciekawy sposób podejmuje problem separacji warstwy logiki aplikacji od widoku, dając projektantowi szablonu do dyspozycji zestaw instrukcji osadzanych bezpośrednio w kodzie szablonu. Programista na wejściu instrukcji  określa jedynie rodzaj spodziewanych danych wejściowych i format ich prezentacji, zaś całą resztą: algorytmami renderowania, przygotowywania danych do wyświetlenia, zajmuje się sam system szablonów.
Mimo że do prezentacji podszedłem z lekkim dystansem, to być może w przyszłości pokuszę się o przetestowanie OPT w praktyce.

Duże zainteresowanie wzbudziły dwie prelekcje dotyczące systemów cachowania . Pierwsza z nich ogólnie zarysowała tematykę wielopoziomowego cachowania aplikacji skali biznesowej, z wykorzystaniem do tego  klastrów i serwerów dedykowanych, wyznaczonych wyłącznie do cachowania  newralgicznych danych. Druga, bardziej konkretna, traktująca o wysokiej wydajności systemie buforowania obiektów Memcached, o którym można przeczytać w relacji mojego kolegi tutaj.

Niestety prezentacja, na którą osobiście czekałem najbardziej o Architekturze Plug-in w PHP,  nie powaliła mnie na kolana.

Sam temat jest obecnie wyjątkowo ciekawy, ze względu na ogólną  potrzebę pisania aplikacji w sposób szybki, przy jednoczesnej minimalizacji nakładów pracy. Łatwo wyobrazić sobie jakim ułatwieniem byłoby składanie aplikacji z gotowych modułów na konkretne żądanie klienta. Jednak zaprojektowanie aplikacji  w oparciu o koncepcję autonomicznych części, „klocków” realizujących pewne samodzielne zadania jak  autoryzacja, blog czy sklep nie jest trywialne. Pojawia się szereg podstawowych problemów…

  • Które warstwy architektury MVC odpowiadałyby za poszczególne zadania: rozdzielania żądań, rejestrowania pluginów, implementacji usług, wyrejestrowywania?
  • W jaki sposób zaprojektować aplikację, w taki sposób żeby moduły pozwalały na manipulację wzajemnymi zależnościami?
  • Jak w łatwy sposób rozszerzać funkcjonalności poszczególnych modułów?
  • Czy rejestrować wszystkie pluginy jednocześnie?

Niestety część  z tych pytań pozostała dla mnie bez odpowiedzi. Owszem prelekcja zawierała fragmenty listingów, jednak sama koncepcja wydaje się zbyt złożona i wiąże się z szeregiem skomplikowanych inżynieryjnych pojęć  – kontenera wstrzykiwania zależności, szczegółów implementacji architektury EDA, których omówienie w tak krótkim czasie, jest niemożliwe.

Podsumowując, zjazd był dla mnie nie tylko zastrzykiem nowych informacji, świetną okazją do poznania ludzi z branży, wymiany doświadczeń i dyskusji na temat realizowanych projektów, ale również bodźcem do dalszego poszerzania wiedzy i szukania coraz to lepszych programistycznych rozwiązań.

Cachowanie na PHPCon

W Skrócie przedstawiam krótka recenzję według  mnie najciekawszego wykładu na PHPCon. Wykład prowadzony przez Przemysława Pawliczuka. Zagadnienie omówione bardzo szczegółowo. Omówiono wiele sposobów cashowania (memcache, redis, shmop, wincache). Oprócz omówienia technologii wspomagających cachowanie wskazano także, na jakie dane należy w głównej mierze zwrócić uwagę. Wąskim gardłem oczywiście zawsze będzie baza danych i to tutaj należy skupić najwięcej uwagi. Cashować należy także fotografie (generowane w locie miniatury), skomplikowane obliczenia, fragmenty wygenerowanego kodu HTML, konfigurację skryptu itd. Wielopoziomowe cachowanie, które głównie było omawiane na wykładzie przeznaczone jest do bardzo dużych aplikacji, gdzie skomplikowane obliczenia lub zapytania do bazy są wykorzystywane w wielu miejscach (np. Jedno zapytanie wykorzystywane jest do wyświetlania katalogu produktów, generowania plików XML itd.).  W przypadku niewielkich projektów bardzo ciekawym pomysłem wydaje się być cashowanie  fragmentów strony lub całych stron internetowych.  Przykładem realizacji takiego pomysłu może być tworzenie tymczasowych statycznych plików HTML z dynamicznych treści i przekierowanie użytkownika bezpośrednio na te pliki (z pominięciem index.php). W ten sposób można błyskawicznie wyświetlić treść użytkownikom pomijając CAŁKOWICIE interpreter. W tym przypadku zysk zmniejszenia zużycia mocy procesora kosztem zwiększenia ilości danych jest nieporównywalny (oczywiście do granicy limitu miejsca na serwerze). W przypadku komercyjnych produktów takich jak sklepy internetowe, szybkość działania aplikacji jest bardzo ważnych czynnikiem przekładającym się bezpośrednio na obroty klienta.