Phalcon - Eklenti olarak sunulan PHP çatısı - PHP Günleri 2013#1

Phalcon - Eklenti olarak sunulan PHP çatısı - PHP Günleri 2013#1

PHP Günleri 2013#1 - İstanbul Nişantaşı Üniversitesi

D55de538259751cc08d16a0843e1c69f?s=128

Hidayet Doğan

May 25, 2013
Tweet

Transcript

  1. Phalcon Eklenti olarak sunulan PHP çatısı

  2. Merhaba! Fotoğraf: Onur Canalp 1995 Tübitak Bilgisayar Kulubü Linux, BASIC,

    C, Perl 1998 Merhaba PHP! 1999 İş Hayatı: Yazılım + Sistem 2000 Türkiye PHP Grubu (php.org.tr) 2013 PHP Geliştiricileri Derneği (pgd.org.tr) http://hi.do @hdogan
  3. Çatı (Framework) nedir? Bir veya birden fazla konsept, yaklaşım dahilinde

    yazılım geliştirme sürecine rehberlik eden, tekrar kullanılabilir platformlar. Kod kütüphaneleri, araçlar, API
  4. Neden çatılar? Standartları olan ve organize edilmiş bir altyapı sunarak

    projelerin daha kolay idame edilmesini ve daha kısa sürede geliştirilmesini sağlar. Profesyonel yazılım geliştirme sürecinde gereklidir.
  5. PHP nasıl çalışır? PHP yorumlanır, derlenmez* Betik her çağırıldığında tekrar

    yorumlanması gerekir. Betik her çağırıldığında (APC, Xcache, Zend Opcache gibi eklentiler kullanılmazsa) sözdizimi kontrol edilir ve sözdizimi ağacı tekrar oluşturulur. PHP esnek, türleri önceden belirtilmemiş (weak/loose typing) değişken yapısına sahiptir.
  6. PHP ile hazırlanmış (geleneksel) çatılar nasıl çalışır? Sınıfları ve fonksiyonları

    içeren birçok dosya her istekte diskten okunur. Kullanılan her dosya yorumlanır. Modern çatıların bazıları performansı arttırmak için geç yükleme ve otomatik yükleme (lazy loading - autoloading) yöntemi kullanır. Sadece gerekli dosyalar diskten okunur ve yorumlanır. Çatıya ait kodlar genellikle değişmez.
  7. PHP eklentileri nasıl çalışır? Web sunucunun yaşam döngüsü boyunca eklentiler

    PHP ile birlikte bir defaya mahsus yüklenir. Derlenmiş olduğu için sözdizimi kontrol edilmez ve yorumlanmaz.
  8. İyi, güzel de PHP kullanmayı bırakıp C mi ögrenelim?

  9. Phalcon! Tamamen C dili ile hazırlanmış PHP eklentisi. Bileşenleri bağımsızdır,

    sadece istenilen bileşenler kullanılabilir. Veritabanlarına erişimde performans için C dili ile hazırlanmış ORM içerir. Şablon yorumlamada performans için C ile hazırlanmış şablon eklentisi içerir. PHP iç yapısına/kaynaklarına doğruca eriştiği için çalışma süresi daha kısadır.
  10. Geleneksel Çatılarla Kıyaslama Geneneksel Çatılar Phalcon Her istekte binlerce satır

    kodun yorumlanması Evet Hayır Her istekte onlarca dosya yüklenmesi Evet Hayır Her istekte sınıfların, fonksiyonların, sabitlerin varlığının kontrol edilmesi Evet Hayır Düşük seviye iyileştirme Hayır Evet
  11. Performans Kıyaslamaları

  12. <h1>Merhaba Dünya!</h1>

  13. Kıyaslama Ortamı İşletim Sistemi: Mac OS X Lion 10.7.4 Web

    Sunucusu: Apache 2.2.22 PHP 5.3.15 + APC 3.1.11 (apc.stat = 0) İşlemci: Intel Core i5 2.04 GHz Hafıza: 4GB DDR3 1333 MHz Disk: 500GB SATA
  14. ab -n 1000 -c 5 http://localhost/phalcon/merhaba/dunya

  15. Saniyedeki İstek Sayısı 0 500 1000 1500 2000 2500 3000

    Zend Laravel Symfony Fuel Kohana Yii CodeIgniter Phalcon 2,535.82 1,059.05 961.28 860.59 729.42 541.01 489.03 354.55 İstek/Saniye
  16. Bir İstek İçin Geçen Süre 0 0.75 1.5 2.25 3

    Zend Laravel Symfony Fuel Kohana Yii CodeIgniter Phalcon 0.39 0.94 1.04 1.16 1.37 1.85 2.05 2.82 Milisaniye/İstek
  17. İstek Başına Kullanılan PHP Dosyası 0 10 20 30 40

    50 60 70 Zend Kohana Laravel Fuel Yii CodeIgniter Symfony Phalcon 4 18 23 27 30 46 46 66 Dosya sayısı
  18. İstek Başına Kullanılan Hafıza 0 0.5 1 1.5 2 Zend

    Yii Symfony Laravel Kohana CodeIgniter Fuel Phalcon 0.75 1 1.1 1.25 1.25 1.5 1.5 1.75 Hafıza (MB)
  19. Mikro Çatı Kıyaslaması

  20. Saniyedeki İstek Sayısı 0 1000 2000 3000 Silex Slim Phalcon

    2516.74 1134.21 448.75 İstek/Saniye
  21. Bir İstek İçin Geçen Süre 0 0.75 1.5 2.25 3

    Silex Slim Phalcon 0.4 0.89 2.23 Milisaniye/İstek
  22. İstek Başına Kullanılan PHP Dosyası 0 15 30 45 60

    Silex Slim Phalcon 2 17 54 Dosya sayısı
  23. İstek Başına Kullanılan Hafıza 0 0.4 0.9 1.3 Silex Slim

    Phalcon 0.75 1.25 1.25 Hafıza (MB)
  24. ORM Kıyaslaması

  25. mysql> desc urunler; +--------------+------------------+------+-----+---------+----------------+ | Field | Type | Null

    | Key | Default | Extra | +--------------+------------------+------+-----+------+-------------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | urun_tipi_id | int(10) unsigned | NO | MUL | NULL | | | ad | varchar(70) | NO | | NULL | | | fiyat | decimal(16,2) | NO | | NULL | | | aktif | char(1) | YES | | NULL | | +--------------+------------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec) 500 istek, anlık 10 istek
  26. 10 Adet Kayıt Ekleme - Süre 0 1 2 3

    4 5 6 Doctrine 2 Phalcon 2.38 5.92 Ekleme süresi (saniye)
  27. 10 Adet Kayıt Ekleme - Hafıza Kullanımı 0 1 2

    3 4 5 6 7 8 Doctrine 2 Phalcon 0.73 7.42 Hafıza (MB)
  28. 10 Adet Kayıt Getirme - Süre 0 0.5 1 1.5

    2 2.5 3 Doctrine 2 Phalcon 0.47 2.22 Getirme süresi (saniye)
  29. 10 Adet Kayıt Getirme - Hafıza Kullanımı 0 2 4

    6 8 10 Doctrine 2 Phalcon 0.77 9.98 Hafıza (MB)
  30. Raspberry Pi

  31. Raspberry Pi İşletim Sistemi: Raspbian (Debian 7) Web Sunucusu: Nginx

    1.2.1 PHP 5.4.4 (FPM) İşlemci: ARMv6 700 MHz Hafıza: 512MB (480MB) Disk: 4GB Class 6 SDHC (Okuma: 19MB/s Yazma: 20MB/s)
  32. Saniyedeki İstek Sayısı 0 14 28 42 56 70 Laravel

    Yii CodeIgniter Phalcon 67.38 5.40 3.96 2.89 İstek/Saniye
  33. Bir İstek İçin Geçen Süre 0 100 200 300 400

    Laravel Yii CodeIgniter Phalcon 14.84 185.24 252.61 345.58 Milisaniye/İstek
  34. Özellikleri Model View Controller Mikro Çatı Dependency Injection/Container Önbellek (APC,

    Memcached, MongoDB, dosya) Oturum yönetimi, filtreleme, ayarlar, sistem günlükleri (log) Şablonlar (PHP ve Volt) ACL (Access Control List)
  35. Özellikleri ORM (Object Relational Mapper) MySQL, PostgreSQL, Oracle, SQLite İlişkiler

    (one-to-one, one-to-many, many-to-many, belongs-to) Davranışlar (Behaviors) Olaylar (Events) Hidrasyon (Hydration) Transaction
  36. Özellikleri ODM (Object Document Mapper) - MongoDB Üst bilgi notları

    (Annotations) HTML, Form yardımcısı Komut satırı arayüzü (CLI) Unit Test (PHPUnit) Debug (Xdebug)
  37. Problemler Yaygınlık (Paylaşımlı barındırma, PaaS) Güncelleme Kritik hata ayıklama

  38. Sorular?

  39. Teşekkürler! http://phalconphp.com http://github.com/phalcon @phalconphp http://github.com/hdogan http://tr.linkedin.com/in/hdogan http://speakerdeck.com/hdogan Hidayet Doğan Phalcon