Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: matipl, dodany: 18.07.2014 16:49, tagi: php

Za kilka tygodni będziemy mogli się cieszyć w pełni stabilnym PHP 5.6. Tymczasem w kwietniu tego roku powstało odgałęzienie PHP o nazwie PHPNG (Next Generation).

Dmitry Stogov z Zenda 5 maja 2014 roku opublikował opis zasady działania PHPNG oraz małe porównanie szybkości w stosunku do PHP 5.5.

Ale czym dokładnie jest PHPNG? Dmitry od dłuższego czasu eksperymentował z silnikiem JIT (Just In Time compilation) wykorzystując LLVM (przypomnę, że w 2008 roku była już podobna próba i powstał PECL LLVM). Wbudowanie tego rozwiązania do OPCache przyspieszyło działanie aplikacji tylko o kilka procent (chociaż wynik w samym bench.php polepszył się 10x). Ta sytuacja pozwoliła zrozumieć, że naprawdę wąskie gardło jest gdzieś indziej. Zespół rozwijający PHPNG przeanalizował na co standardowa aplikacja PHP wykorzystuje zasoby CPU:

  • około 20% czasu CPU to memory manager
  • 10% poświęca na operacje związane z hashowaniem tabel
  • 30% czasu to funkcje wewnętrzne
  • oraz 30% to VM

Sam VM został już zoptymalizowany za pomocą powyższych hacków. Trzeba było zająć się optymalizacją działania pozostałych składowych, szczególnie alokacji pamięci. Dzięki tym zabiegom typowa aplikacja przyspieszyło o 20%. Tylko dzięki zmianie PHP 5.5 na PHPNG. Jak to wygląda w praktyce?

  • WordPress 3.6 – 20.0% szybszy (253 vs 211 req/sec)
  • Drupal 6.1 – 11.7% szybszy (1770 vs 1585 req/sec)
  • Qdig – 15.3% szybszy (555 vs 482 req/sec)
  • ZF test app – 30.5% szybszy (217 vs 166 req/sec)

PHPNG jest „prawie” stabilne, działa większość rozszerzeń. Jeśli macie chwilę możecie pobrać gałąź i skompilować (instrukcja). HHVM jest świetne w pewnych sytuacjach (chociaż nadal nie jest w pełni kompatybilny z ZF czy Symfony), ale musimy pamiętać że tworzy go firma zewnętrzna. Natomiast PHPNG jest rozwijane jako wewnętrzny projekt, i miejmy nadzieję że zostanie włączony do PHP 6.

Swoją drogą trwa obecnie dyskusja dotycząca nazewnictwa kolejnej dużej wersji PHP. Nie jest do końca pewne czy to będzie PHP6 (nazwa wałkowana od lat), czy nie lepiej przeskoczyć jeden numer i nazwać PHP 7.

PS: Stabilność aktualnie rozwijanej gałęzi (PHP 5.6) można sprawdzić na Travisie.

Autor wpisu: matipl, dodany: 14.07.2014 14:09, tagi: php

php-logo

Już niebawem doczekamy się kolejnej wersji PHP. Na początku czerwca ukazała się ostatnia beta, tym samym zamknięto listę zmian funkcjonalnych. Przed nami już tylko wersje RC (Release Candidate).

Zmiany

Przede wszystkim wprowadzenie nowego operatora ** (do potęgi). Na pewno ułatwi to pisanie bardziej matematycznych aplikacji:

$a = 2**3; // $a = 2^3 = 8
$b = 2**3**2; // $b = 2^(3^2) = 512

Od teraz kodowanie UTF-8 jest uznawane za domyślne w ramach całego PHP (default_charset). Dodatkowo kodowanie ustawione za pomocą default_charset będzie automatycznie ustawiało kodowanie dla funkcji związanych z kodowaniem, np. htmlspecialchars(). Ustawianie kodowania dla iconv/mbstring zostsało uznane jako przestrzałe i zobaczymy deprecated.

W PHP 5.6 możemy wielokrotnie korzystać w ramach wywołania aplikacji z php://input, od teraz nie jest czyszczone po pierwszym użyciu. Chciałoby się rzec, dlaczego tak późno?

Na pewno spora część z Was korzysta z GMP (GNU Multiple Precision). Wcześniej aby dodać 2 liczby musieliśmy skorzystać z gmp_add, obecnie wystarczy użyć operatora +, który został przeciążony.

Jeśli chodzi o sprawy bezpieczeństwa, to została dodana funkcja hash_equals(), która ma za zadanie porównać 2 zakodowane hasła zawsze w tym samym, stałym czasie. Dodano również obsługę algorytmu hashującego gost-crypto. Dodatkowo została mocno rozwinięta obsługa SSL/TLS w PHP 5.6 (m.in. łagodzenie ataków renegocjacji TLS, obsługa certyfikatów fingerprint). Jest tego naprawdę sporo.

Porządki

Od pewnego czasu zespół developerów PHP stara się pozbyć starych, problematycznych funkcji czy rozwiązań. I tak wraz z wersją PHP 5.6 otrzymamy błąd E_DEPRECATED, tzn. że w przyszłości zostaną całkowicie usunięte z języka:

  • możliwość włączenie w php.ini dyrektywy always_populate_raw_post_data
  • tym samym zostanie usunięta możliwość korzystania z $HTTP_RAW_POST_DATA, w takim wypadku powinniśmy użyć php://input

To nie wszystko, zmieni się również zachowanie niektórych składowych języka:

  • json_decode jest bardziej restrykcyjny, tzn. w przypadku użycia True zamiast true, False zamiast false, czy Null zamiast null zostanie rzucony błąd
  • zasoby GMP od teraz są zawsze obiektami
  • funkcje mcrypt wymagają od teraz podania prawidłowego klucza i IV
  • domyślnie wszystkie kodowane streamingi mają teraz domyślnie włączoną weryfikację połączenia

Wydajność

LornaJane po wydaniu PHP 5.6 beta2 przeprowadziła kilka testów wydajności środowisk, od wersji 5.3 do 5.6. Wykorzystała do tego bench.php:

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: matipl, dodany: 12.07.2014 07:36, tagi: php

PHPCon Poland 2014

Kilka dni temu została ogłoszona przez Organizatorów agenda tegorocznego spotkania miłośników języka PHP. Z zapisami lepiej nie czekać, na tą chwilę na pewno zobaczycie prawie 300 uczestników, chociaż liczba samych zgłoszeń wciąż rośnie (obecnie 408).

Dokładny harmonogram (godzinowy) zostanie udostępniony na przełomie sierpnia/września. Obecnie możemy cieszyć się listą tematów i osób, które na pewno zobaczymy w Szczyrku. Ale do rzeczy, będzie trochę o frameworkach, z naciskiem na Symfony 2. Do tego posypka w postaci teorii architektury oprogramowania, sporo o tworzeniu API, HHVM, skalowaniu aplikacji oraz testach. Miejscami może wydawać się Wam, że to „standardzik”, ale zapewniam będzie czego posłuchać, szczególnie doświadczeń praktyków. Najlepsze smaczki?

  • Architektura Symfony2 (Michał Pipa)
  • Game of performance – Message brokers behind the scenes (Piotr Pasich)
  • Migracja GoldenLine do Symfony2 (Sebastian Grodzicki)
  • Skalowanie aplikacji PHP (Leszek Krupiński)
  • Domain Driven Design w PHP (Wojciech Sznapka)
  • (GoldenLine)… czyli kod ‚Symfony2 way’ na prawdziwym przykładzie (Karol Traczykowski)

Na koniec przypomnę, że w tym roku „testowo” w piątek będą organizowane warsztaty przed samymi prelekcjami. Moim zdaniem największym rodzynkiem będzie „Narzędzia Scrum Mastera” prowadzone przez  Kate Terlecką. Zapraszam.

Autor wpisu: Łukasz Socha, dodany: 11.07.2014 17:05, tagi: css

Wpis ten dedykowany jest osobom dopiero uczącym się HTMLa i CSS. Na początku swojej przygody z tworzeniem stron miałem problemy ze zrozumieniem sensu istnienia obok siebie id oraz class. Po latach doświadczeń postaram się to wyjaśnić „dla potomnych” :). Na początek stworzę szkielet strony HTML. Kod ten pokazuje strukturę podstrony kategorii z lista postów na […]

Autor wpisu: zleek, dodany: 08.07.2014 12:36, tagi: php

Pracując nad projektem wykorzystującym bazę danych, czasami zachodzi potrzeba sprawdzenia zapytań, które są wykonywane na naszej bazie danych. Szczególnie przydatne jest to wówczas, gdy wykorzystujemy mechanizmy ORM (Doctrine lub natywny mechanizm wbudowany w Zend Framework). W takiej sytuacji nie musimy wprowadzać korekt do naszego projektu, aby zobaczyć wygenerowane zapytania – wystarczą trzy zapytania po stronie […]

Autor wpisu: bastard13, dodany: 03.07.2014 00:23, tagi: design, oop

Zapewne już nie raz mieliście okazję przeczytać stwierdzenie, że bardzo istotne jest to, aby w kodzie do nazywania klas domenowych wykorzystywać, te (nazwy) których używa nasz klient. Wielu z Was uznaje to za oczywistość, wielu dodaje jakieś "ale", są tacy, którzy twierdzą, że przecież klient i tak nie wie czego chce, to po ci się przejmować. Oczywiście są też tacy, którzy sami się takimi "pierdołami" nie mają czasu przejmować, bo przecież "kod jest do napisania".Nie powiem, że się nie da i Wasz projekt bez takiego odwzorowania nie ma szans na powodzenie, bo to nie jest prawda. Przynajmniej nie w każdym przypadku. Są jednak projekty odpowiednio duże bądź skomplikowane, gdzie ten brak spójności potrafi zauważalnie wpłynąć na tempo produkcji kodu oraz na jego jakość. Niestety, jeżeli się "nie dogadamy", to nawet mimo naszych najszczerszych chęci i przy wykorzystaniu najlepszych technik i praktyk nie unikniemy błędów.Czytaj więcej »
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.