Slide 1

Slide 1 text

Phalcon Eklenti olarak sunulan PHP çatısı Friday, November 9, 12

Slide 2

Slide 2 text

Ç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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

Hız Friday, November 9, 12

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

İyi, güzel de PHP kullanmayı bırakıp C mi ögrenelim? Friday, November 9, 12

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

Performans Kıyaslamaları Friday, November 9, 12

Slide 16

Slide 16 text

Merhaba Dünya!

Friday, November 9, 12

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

ab -n 1000 -c 5 http://localhost/phalcon/merhaba/dunya Friday, November 9, 12

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

İ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

Slide 22

Slide 22 text

İ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

Slide 23

Slide 23 text

Mikro Çatı Kıyaslaması Friday, November 9, 12

Slide 24

Slide 24 text

Saniyedeki İstek Sayısı 0 1000 2000 3000 Silex Slim Phalcon 2516.74 1134.21 448.75 İstek/Saniye Friday, November 9, 12

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

İ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

Slide 27

Slide 27 text

İ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

Slide 28

Slide 28 text

ORM Kıyaslaması Friday, November 9, 12

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

Ö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

Slide 35

Slide 35 text

Ö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

Slide 36

Slide 36 text

Yol Haritası Bileşen arayüzleri (interfaces) Veritabanı destekli oturum yönetimi Kullanıcı doğrulama (authentication) Mail! Friday, November 9, 12

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

Sorular? Friday, November 9, 12

Slide 39

Slide 39 text

Teşekkürler! http://phalconphp.com http://github.com/phalcon Twitter @phalconphp http://hi.do http://github.com/hdogan Twitter @hdogan Friday, November 9, 12