Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Phalcon - Eklenti olarak sunulan PHP çatısı

Phalcon - Eklenti olarak sunulan PHP çatısı

XVII. Türkiye'de İnternet Konferansı - Anadolu Üniversitesi, Eskişehir

Hidayet Doğan

November 07, 2012
Tweet

More Decks by Hidayet Doğan

Other Decks in Programming

Transcript

  1. Çatı 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 Friday, November 9, 12
  2. 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. Friday, November 9, 12
  3. 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 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. Friday, November 9, 12
  4. 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 (lazy loading - autoload) yöntemi kullanır. Sadece gerekli dosyalar diskten okunur ve yorumlanır. Çatıya ait kodlar genellikle değişmez. Friday, November 9, 12
  5. 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. Friday, November 9, 12
  6. Fibonacci 40 0 80 160 240 320 400 C Java

    1.6 Ruby 1.9 Lua 5.1 PHP 5.4 Python 2.7 Perl 5.12 PHP 5.3 377.19 161.2 77.9 77.7 40.7 37.4 1.3 0.2 Saniye Friday, November 9, 12
  7. Fibonacci 40 0 80 160 240 320 400 C Java

    1.6 Ruby 1.9 Lua 5.1 PHP 5.4 Python 2.7 Perl 5.12 PHP 5.3 PHP Eklenti 0.79 377.19 161.2 77.9 77.7 40.7 37.4 1.3 0.2 Saniye Friday, November 9, 12
  8. Hız neden önemli? Google: Yarım saniye gecikme = %20 ile

    %25 arası daha az trafik Bing: 1 saniye gecikme = %2.8 daha az gelir, 2 saniye gecikme = %4.3 daha az gelir Yahoo!: 0.4 saniye gecikme = %5 ile %9 arası daha az trafik Mozilla: İndirme sayfasının 2.2 saniye hızlanması = %15.4 daha fazla indirme Friday, November 9, 12
  9. Hız neden önemli? Kullanıcıların %47’si bir sayfanın açılma süresini 2

    saniyenin altında bekler. Kullanıcıların %40’ı sayfa 3 saniyeden daha uzun sürede açılıyorsa o sayfayı terkeder. Friday, November 9, 12
  10. 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. PHP iç yapısına/kaynaklarına doğruca eriştiği için çalışma süresi daha kısadır. Friday, November 9, 12
  11. 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 Friday, November 9, 12
  12. 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 İşlemci: Intel Core i5 2.04 GHz Hafıza: 4GB DDR3 1333 MHz Disk: 500GB SATA Friday, November 9, 12
  13. Saniyedeki İstek Sayısı 0 500 1000 1500 2000 2500 3000

    Zend Laravel Symfony Fuel Kohana Yii CodeIgniter Phalcon 2386.74 862.58 762.55 727.07 568.41 541.01 424.97 324.02 İstek/Saniye Friday, November 9, 12
  14. Bir İstek İçin Geçen Süre 0 1 2 3 4

    Zend Laravel Symfony Fuel Kohana Yii CodeIgniter Phalcon 0.42 1.16 1.17 1.37 1.76 1.85 2.35 3.09 Saniye/İstek Friday, November 9, 12
  15. İ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ı Friday, November 9, 12
  16. İ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) Friday, November 9, 12
  17. Saniyedeki İstek Sayısı 0 1000 2000 3000 Silex Slim Phalcon

    2516.74 1134.21 448.75 İstek/Saniye Friday, November 9, 12
  18. Bir İstek İçin Geçen Süre 0 0.75 1.5 2.25 3

    Silex Slim Phalcon 0.4 0.89 2.23 Saniye/İstek Friday, November 9, 12
  19. İstek Başına Kullanılan PHP Dosyası 0 15 30 45 60

    Silex Slim Phalcon 2 17 54 Dosya sayısı Friday, November 9, 12
  20. İ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) Friday, November 9, 12
  21. 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 Friday, November 9, 12
  22. 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) Friday, November 9, 12
  23. 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) Friday, November 9, 12
  24. 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) Friday, November 9, 12
  25. 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) Friday, November 9, 12
  26. Özellikleri PSR-0 uyumlu sınıf yükleyici (Phalcon\Loader) Model View Controller Mikro

    Çatı Dependency Injection (Bağımlılık enjeksiyonu/zerki) Önbellek (APC, Memcached, dosya) Oturum yönetimi, filtreleme, ayarlar, sistem günlükleri (log) Şablonlar (PHP ve C ile hazırlanmış Volt) Friday, November 9, 12
  27. Özellikleri ORM (Object Relational Mapper) MySQL PostgreSQL SQLite İlişkiler (one-to-one,

    one-to-many, many-to-many, belongs-to) Doğrulayıcılar (validators) Olaylar (beforeSave, afterSave) MongoDB Friday, November 9, 12
  28. Kimler? Andres F. Gutierrez (Kolombiya) Eduar Carvajal Diaz (Kolombiya) Nikolaos

    Dimopoulos (ABD) Kenji Minamoto (Japonya) Wojtek Gancarczyk (Almanya) Marcin Wawrzyniak (Polonya) Hidayet Doğan (Türkiye) Friday, November 9, 12