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

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

Hidayet Doğan

May 25, 2013
Tweet

More Decks by Hidayet Doğan

Other Decks in Programming

Transcript

  1. 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
  2. Ç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
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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
  9. 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
  10. 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
  11. 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
  12. İ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ı
  13. İ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)
  14. 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
  15. İstek Başına Kullanılan PHP Dosyası 0 15 30 45 60

    Silex Slim Phalcon 2 17 54 Dosya sayısı
  16. 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
  17. 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)
  18. 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)
  19. 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)
  20. 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)
  21. 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)
  22. Saniyedeki İstek Sayısı 0 14 28 42 56 70 Laravel

    Yii CodeIgniter Phalcon 67.38 5.40 3.96 2.89 İstek/Saniye
  23. 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
  24. Ö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)
  25. Ö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
  26. Ö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)