PHP ve performans


17

Her zaman PHP'nin orta ve küçük web siteleri için olduğunu, kurumsal uygulamalar için .NET ve Java olduğunu duydum. Benim sorum PHP ile ilgili. PHP kurumsal web uygulamaları için neden iyi bir seçenek değil? Çünkü web uygulaması daha büyük hale gelirse PHP yorumlanmış bir dil olduğundan daha yavaş olacaktır?

Şirket dünyasının ürünleri ile entegrasyonu ve arka uç hizmetleri vb. Nedeniyle .NET veya J2EE'yi seçeceğini biliyorum. büyük siteler?

Kısacası, PHP'nin performansı ile web sitesinin büyüklüğü arasında bir ilişki var mı? PHP'yi büyük siteler için uygun olmayan seçenek yapan faktörler nelerdir?


1
Mediawiki (wikipedia'nın motoru) PHP ile yazılmıştır ve iyi performans gösterdiler, ancak bu hiçbir şey kanıtlamaz. Niş bir durum olabilir.
Michael K

2
@MichaeltheGhost, Alexa'nın ilk 50'sindeki siteleri (ve belki biraz daha fazlasını) kullanan zayıf örneklerdir, çünkü hacimleri o kadar aşırı düzeyde ki, çözümleri bu trafik seviyesi için son derece özelleştirilmiş ve ince ayarlanmış ve gerçekten aynı değil teknoloji artık.
Ryathal

1
Facebook da PHP kullanıyor. Ayrıca bunun performans değil ölçeklenebilirlikle ilgili şeyler anlamına geldiğini unutmayın, ancak farkı biliyorsunuz, değil mi? Başka bir örnek, ölçeklenebilirlik nedeniyle PHP'de web sitesini yeniden Java'dan yeniden yazmış olan freemobile'dir.
deadalnix

"Şu anda, bazı hizmetler Zend Engine PHP kullanmaya devam etse de, Wikimedia Foundation'daki Mediawiki'deki PHP kodunun çoğu HHVM JIT derleyicisini kullanıyor." tr.wikipedia.org/wiki/Wikipedia:FAQ/Teknik Facebook php hızlandırmak için oluşturulan bu (sonra bir derlemek için bir php c ++ çevirmen). çalışır, sadece php yazdığı için hız her zaman aynı olacağını söyleyemezsiniz. Bu anlamda kodla ne yaptığınıza bağlı ...
pqsk

Yanıtlar:


19

Performans muhtemelen faktörlerden biri değildir. Dinamik bir dil için PHP aslında oldukça iyi bir performans sergiliyor; göreve bağlı olarak, diğer teknolojileri yenebilir veya yenmeyebilir. Uygulama modeli, doğrudan Java veya ASP.NET ile karşılaştırmak için çok farklıdır. Ölçülebilir bir hız farkı olsa bile, büyük değildir ve muhtemelen doğrusaldır, yani daha fazla donanım atılarak çözülebilir. Ayrıca, programlama dilinin kendisi nadiren darboğazdır - algoritmalar, veritabanı erişimi, ağ bant genişliği ve genel olarak G / Ç, gerçekten CPU-yoğun bir şey yazmıyorsanız, genel suçlulardır.

ASP.NET veya Java'yı PHP üzerinden kullanmanın daha olası nedenleri şunlardır:

  • Platform entegrasyonu. ASP.NET, .NET ve temel Windows işletim sistemi ile kapsamlı entegrasyon sunar.
  • Genel amaç. PHP web için özel olarak tasarlanmıştır, .NET ve Java ise genel amaçlı platformlardır. Java veya .NET kullanarak, hem masaüstü hem de web ön uçlarını aynı paylaşılan koda çok az çabayla yapıştırabilirsiniz, PHP masaüstü uygulamaları yazmak için çok uygun değildir.
  • Kod organizasyon özellikleri. Java ve .NET baştan OOP için tasarlanırken, PHP'deki OOP biraz sonradan düşünülmüş. PHP çok yakın zamanda ad alanlarını tanıttı ve .NET ve Java'nın sunduklarına kıyasla sınırlı ve beceriksiz. Kurumsal tarzda programlama genellikle PHP'yi daha az aday yapan OOP'ye dayanır.

Algılanan etki için başka bir neden PHP ücretsiz (bira gibi) ve her yerde - her ucuz paylaşılan web hosting şirketi standart paketinde PHP var, ama bir .NET veya Java sunucusu size daha fazla mal olacak olmasıdır. Sonuç olarak, çok sayıda küçük web sitesi PHP'yi kullanıyor, çünkü bu iş için en iyi araç değil, eldeki tek araç.

PHP'nin büyük projeler için uygun olmadığı anlamına gelmez - sadece 'girişimci' tür programlama ile iyi gitmez. Güçlü yönleri başka bir yerde yatmaktadır ve eğer bunlardan yararlanabiliyorsanız, diğer web teknolojilerinde olabildiğince kolayca büyük ölçekli uygulamalar oluşturabilirsiniz.


2
Küçük bir kelime oyunu, ASP.NET paylaşılan barındırma LAMP paylaşılan barındırma ile aynı fiyata alabilirsiniz. Sorun, çoğu insanın arama yaparken ilk bulduğu yerler, küçük ve orta ölçekli işletmeler için pazarlanan ve daha pahalı olanlardır.
jfrankcarr

+1, bu çok iyi söylenmiş ve özetlenmiştir. Kötü performans gösteren çoğu uygulama için darboğaz nadiren dildir.
GrandmasterB

1
doğru, ancak Java'nın bir çözüm olduğunu düşünmeyin - Oracle gibi şirketlerden çok sayıda 'Kurumsal' uygulama kullanma şansım yoktu. Neredeyse hepsi, işlevselliği çok az olan bir PHP OSS uygulamasıyla değiştirilebilir, ancak performans ve kullanışlılıkta büyük bir artış olabilir.
gbjbaanb

3
@gbjbaanb: Java bu bağlamda bir çözüm değil çünkü sorun yok. Ve bir şeyin açık kaynak olup olmadığı konusuyla kesinlikle ilgili değildir.
tdammers

@BrandmasterB evet ve hayır. Örneğin Java, dahili olarak senkronize edilmiş birçok temel öğeye sahiptir ve PHP'de yoktur. Ölçeklenebilir java kodu yazmak için daha fazla disiplin gerektirir. freemobile bu etkinin gerçek bir dünya örneğidir. Ancak, ölçeklenebilirlik yalnızca ön uca bağlı olmadığından (örneğin veritabanları burada çok önemlidir) yine de düşünmeniz gerekir.
deadalnix

13

Trafiği karıştırıyorsunuz ("küçük ve orta ölçekli web sitesi" genellikle küçük ve orta ölçekli trafiği olan bir web sitesi anlamına gelir), iş mantığı komplikasyonu derecesi (basit web sitesi ve kurumsal çözüm). İkinci durumda performans anahtar faktör değildir.

Örneğin, Facebook yüksek trafikli bir web sitesidir, ancak bir kurumsal uygulama değildir. Öte yandan, Java uygulama sunucularına dayanan, orta büyüklükteki web sitelerinin trafiğini bile işleyemeyecek çok sayıda intranet vardır.

Performans açısından PHP en iyi seçenek değil, ama o kadar da kötü değil. Özellikle diğer dinamik dillerle karşılaştırmak. Ancak yine de ham performans en önemli faktör değildir. Yüksek trafikli web siteleri oluşturmak, mimari düzeyde ölçeklenebilirliği optimize etmekle ilgilidir.


PHP neden işletme tarafından bu kadar aşağılanıyor? Birkaç nedeni var, ilk önce korkunç bir güvenlik itibarı olurdu . İkincisi, çirkin, yönetilemeyen HTML-PHP spagetti kodu oluşturan amatörler için bir dil olarak algılanması. Olgunlaşmış MVC çerçeveleri olmasına rağmen bu algı devam ediyor. PHP'nin orijinal yazarının bir çerçeveye ihtiyacınız olmadığını iddia etmesinin yardımcı olmadığını tahmin ediyorum . Aslında, programlama becerisi az olan veya hiç olmayan bu clueless amatörlerin kendilerine "PHP programcıları" dediği de yardımcı olmuyor. Üçüncü neden, herhangi bir deneyimli programcının hemfikir olacağı, PHP'nin sadece bir dil olarak kötü tasarlandığıdır. Bir web yöneticisi tarafından tasarlandığını açıkça görebilirsiniz,

Ve evet, kurumsal olarak her şey PHP'nin de parlamadığı sistem entegrasyonu ile ilgilidir. Yeterli çaba ile C modülleri oluşturabilirsiniz. Kullanması oldukça sıkıcı olan PHP-Java köprüsü var. Bunun ötesinde fazla bir şeyin yok. Boost :: PHP (C ++ ile entegrasyon) oluşturma girişimleri başarısız oldu. JVM üzerinde çalışan PHP-klonları, PHP ile% 100 uyumluluğa yakın olmaktan çok uzaktır (bir yan not olarak, resmi bir PHP dil tanımı yoktur, tek referans varsayılan uygulamadır).


6

İnsanların neden PHP'nin küçük ve orta ölçekli web siteleri için olduğunu iddia etmeleri hakkında hiçbir fikrim yok. Bildiğim kadarıyla bu doğru değil. Ben küçük başlayan bazı PHP destekli web siteleri biliyorum, sonra ülkemde top100 web siteleri olarak büyüdü. Hala PHP kullanıyorlar ve bu konuda hiçbir şey değiştirme planları yok.

İnsanları böyle bir sonuca iten şey, Java (ve ayrıca .NET ile de tahmin edersek) uygulama scalling sık sık belgeleme ve literatürde getirilen bir terim olmasıdır. Çoğu uygulama sunucusu, popülerlik artışıyla birlikte "beygir gücünün" hızlı bir şekilde eklenmesini sağlayan bir grup kümelemeyi destekler. PHP durumunda kümeyi kendiniz oluşturmanız gerekir. Farklı bileşenler kullanarak birçok yolla yapabilirsiniz ve PHP iç çalışmaları hakkında bir iki şey bilmek zorundasınız. Bu muhtemelen insanların PHP tek sunucusuyla (ve dolayısıyla küçük veya orta ölçekli web sitesi ile) PHP'nin çıkmaz noktası olduğunu düşündürür.


3

Sadece kurumsal web uygulaması diye bir şey yoktur. Kurumsal dünyada genellikle web bölümünün tüm sistemle karşılaştırıldığında oldukça küçük olduğu tam bir kurumsal sisteminiz vardır. Web altında toplu işlem, kuyruk mesajlaşma, kurumsal entegrasyon, ağ geçitleri ve çok daha fazlasını gerçekleştiren birçok sistem vardır. Üstteki etkinlik yalnızca

PHP web için iyi olsa da, diğer dağıtılmış sistemler için iyi değildir. Tüm bu sistemleri Java veya .NET'te yaptığınızdan, web yığınını PHP yerine aynı platformda oluşturmak kolaydır.


1

PHP ile ilgili sorunların güvenlik açıklarının geçmişinden daha az performanstan kaynaklandığını söyleyebilirim. Şüphesiz , PHP'de herhangi bir boyutta veya karmaşıklıkta bir web sitesi yazmak ve karmaşıklığı arttıkça güvenliği sürdürmek mümkün olsa da , güvenliği korumak daha zor hale gelir.

Java ise ilk günden itibaren güvenlik konusunda en azından bazı fikirlerle tasarlandı. Her ne kadar bunlar mevcut dağıtımların çoğuna tam olarak uymasa da (orijinal düşünce, öncelikle servetler değil, küçük uygulamalar etrafındaydı), özelliklerinin güvenli kod üretmeye daha iyi uyduğu anlamına gelir. Ve elbette, hala da durmadı - küçük uygulamalar artık ölü bir sorun olduğundan, Java, şimdi (çoğunlukla) kapladığı sunucu tarafı rolünü vurgulamak için yeniden tanımlandı.

.NET en azından Java ile neredeyse doğrudan rekabet etmeye çalıştığından, bu konuda çok benzer özellikler ve yetenekler sağlar. Sun veya Microsoft'un bu konuda daha iyi bir iş yapıp yapmadığı konusunda tartışabilir (ve her iki kampın taraftarları da), ancak her ikisinin de üzerinde çalışmaya çalışan insanların ekiplerinin bu konuda PHP'ye karşı oldukça ciddi bir avantaj sağladığını tartışabilirsiniz. saygı.


0

1) Performans: Bu noktada birkaç cevap yanlış yönlendiriliyor. (Geçmişte başarılı bir şekilde kullandığım)
Phalanger projesi , PHP ve tersi içinde C # kodunu kullanmanıza veya birinden diğerine tamamen geçmenize izin verir. Muhtemelen bazı değişiklikler yapmanız gerekecek, ancak üzerinde çalışmaya devam ettikçe, daha iyi ve daha iyi hale geliyor.
Demek istediğim, C # lehine ortalama 2.5 hız faktörü olduğunu keşfettiler (veya genel olarak .NET, VB de aynısını yapardı, sonunda MSIL).
Wordpress ile testlerine göz atın, çok sayıda geliştirici çekti.

Şimdi onu henüz görmedik, ancak her zaman FaceBook'un PHP'de yazıldığını söyleyecek ahbap var. Yanlış. Başlangıçta, hatalarını fark edene ve HipHop'u C ++ 'a dönüştürmek için yazdı.

EDIT: Görünüşe göre son blok belirsiz, yani demek istediğim FaceBook IS PHP ile yazılmış, ama HipHop genel hızını artırmak için, C ++ olarak RUN yapar , BECAUSE PHP yavaş.

2) Güvenlik: Daha önce de belirtildiği gibi, PHP'nin uzun bir güvenlik sorunu geçmişi vardır.

3) Geliştirme süresi: PHP'de bir web sitesi yapmak, özellikle çerçeveler ve mevcut tüm "site oluşturucular" ile daha kolay olma eğilimindedir. İyi, güvenilir ve güvenli bir PHP web sitesi yapmak başka bir hikaye.


Facebook / HipHop olayına gelince, çok fazla değişmiyor. Hala PHP ifadeleri yazıyorlar, değil mi? PHP'den Java'ya derleyici de var. Tüm PHP kodumu onunla derlersem, sitemin gerçekten Java ile yazılmış olduğu anlamına mı gelir?
Jacek Prucia

Java olduğu anlamına gelmez, bu şekilde yürütüldüğü anlamına gelir.
Louis Kottmann

Tamam, haklısın, ancak yine de sitemin PHP ile yazılmış olduğunu iddia edebilir miyim? Evet ise, herkes Facebook'un PHP ile yazılmış olduğunu iddia edebilir. Başka bir deyişle, hepsi "programlama dili" terimini nasıl anladığınıza bağlıdır. Yalnızca geçerli ifadelerin birleşimi mi yoksa çalışma zamanı ortamı mıdır? İlk anlamı tercih ediyorum ve bu yüzden HipHop olayı benim için fazla değişmiyor. Öyle ki, bahsettiğiniz FaceBook
ahbapıyım

Tamam, daha açık hale getireceğim. Ama kayıt için, okuyucuların çoğunun benim fikrimi anladığından eminim.
Louis Kottmann

Facebook'u başlangıçta PHP ile yazmak yanlış değildi. Gördükleri ölçeklenebilirliğe ayak uyduramadıklarını tespit ettiklerinde, HipHop kullanarak sorunu çözdüler. Bu PHP kullanmak tüm web siteleri için çok iyi bir seçenek olduğunu düşünüyorum. Bununla birlikte, Slashdot düz perl kullanıyor ve ölçek problemini çözdü, wikipedia düz PHP kullanıyor ve ölçek problemleri de yok.
gbjbaanb
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.