PHP dan kinerja

17

Saya selalu mendengar bahwa PHP adalah untuk situs web menengah dan kecil sedangkan .NET dan Java untuk aplikasi perusahaan. Pertanyaan saya adalah tentang PHP. Mengapa PHP bukan pilihan yang baik untuk aplikasi web perusahaan? Apakah karena jika aplikasi web menjadi lebih besar maka PHP akan lebih lambat karena merupakan bahasa yang ditafsirkan?

Saya tahu bahwa dunia korporat akan memilih .NET atau J2EE karena integrasi dengan produk mereka dan karena layanan back end, dll. Namun, jika kita hanya memiliki PHP untuk membangun situs dan aplikasi web maka bagaimana kita dapat menggunakannya untuk berkinerja baik dengan situs besar?

Singkatnya, Apakah ada hubungan antara kinerja PHP dan ukuran situs web? Apa faktor yang membuat PHP tidak menjadi pilihan yang tepat untuk situs besar?

Naif
sumber
1
Mediawiki (mesin wikipedia) ditulis dalam PHP dan mereka membuatnya bekerja dengan baik, tetapi itu tidak membuktikan apa-apa. Bisa menjadi ceruk kasus.
Michael K
2
@MichaeltheGhost menggunakan situs di Alexa top 50 (dan mungkin bahkan sedikit lebih) adalah contoh buruk karena volumenya berada pada tingkat yang ekstrem sehingga solusi mereka sangat disesuaikan dan disetel dengan baik untuk tingkat lalu lintas tersebut dan tidak benar-benar sama teknologi lagi.
Ryathal
1
Facebook juga menggunakan PHP. Perhatikan juga bahwa ini berarti banyak hal tentang skalabilitas, bukan kinerja, tetapi Anda tahu bedanya, kan? Contoh lain adalah freemobile, yang menulis ulang situs webnya dalam PHP dari Java, untuk alasan skalabilitas.
deadalnix
"Saat ini, sebagian besar kode PHP di Mediawiki di Wikimedia Foundation menggunakan kompiler HHVM JIT, meskipun beberapa layanan terus menggunakan Zend Engine PHP." en.wikipedia.org/wiki/Wikipedia:FAQ/Teknis itulah yang dibuat Facebook untuk mempercepat php (ini adalah penerjemah php ke c ++ yang kemudian mereka kompilasi). berfungsi, hanya Anda tidak bisa mengatakan hanya karena itu ditulis dalam php kecepatannya akan selalu sama. Itu tergantung pada apa yang Anda lakukan dengan kode itu ...
pqsk

Jawaban:

19

Kinerja mungkin bukan salah satu faktor. Untuk bahasa yang dinamis, PHP sebenarnya berkinerja cukup baik; tergantung pada tugasnya, mungkin atau mungkin tidak mengalahkan teknologi lain. Model aplikasi terlalu berbeda untuk membandingkannya langsung dengan Java atau ASP.NET. Bahkan jika ada perbedaan kecepatan yang terukur, itu tidak besar, dan itu mungkin linier, yang berarti dapat diselesaikan dengan melemparkan lebih banyak perangkat keras padanya. Juga, bahasa pemrograman itu sendiri jarang menjadi hambatan - algoritma, akses basis data, bandwidth jaringan, dan I / O pada umumnya adalah penyebab umum, kecuali jika Anda menulis sesuatu yang benar-benar intensif CPU.

Alasan untuk menggunakan ASP.NET atau Java lebih dari PHP yang lebih mungkin meliputi:

  • Integrasi platform. ASP.NET menawarkan integrasi luas dengan .NET dan OS Windows yang mendasarinya.
  • Tujuan umum. PHP dirancang khusus untuk web, sedangkan .NET dan Java adalah platform untuk tujuan umum. Menggunakan Java atau .NET, Anda dapat memakukan kedua desktop dan antarmuka web ke kode bersama yang sama dengan sedikit usaha, sementara PHP tidak terlalu cocok untuk menulis aplikasi desktop.
  • Fitur organisasi kode. Java dan .NET dirancang untuk OOP sejak awal, sementara OOP di PHP agak ketinggalan jaman. PHP memperkenalkan ruang nama baru-baru ini, dan mereka terbatas dan canggung dibandingkan dengan apa yang ditawarkan oleh .NET dan Java. Pemrograman gaya enterprise biasanya sangat bergantung pada OOP, yang menjadikan PHP kandidat yang lebih rendah.

Alasan lain untuk efek yang dirasakan adalah PHP gratis (seperti bir) dan ada di mana-mana - setiap perusahaan web hosting murah berbagi memiliki PHP dalam paket standar mereka, tetapi .NET atau server Java akan dikenakan biaya lebih banyak. Akibatnya, sejumlah besar situs web kecil menggunakan PHP, bukan karena itu adalah alat terbaik untuk pekerjaan itu, tetapi satu-satunya yang ada di tangan.

Itu bukan untuk mengatakan PHP tidak cocok untuk proyek-proyek besar - hanya saja tidak cocok dengan jenis pemrograman 'enterprisey'. Kekuatannya terletak di tempat lain, dan jika Anda dapat memanfaatkannya, Anda dapat dengan mudah membangun aplikasi skala besar seperti yang Anda bisa dengan teknologi web lainnya.

tammmer
sumber
2
Satu sedikit berdalih, Anda bisa mendapatkan shared hosting ASP.NET dengan harga yang sama dengan LAMP shared hosting. Masalahnya adalah tempat pertama yang ditemukan kebanyakan orang ketika mereka mencari adalah yang dipasarkan ke usaha kecil hingga menengah dan lebih mahal.
jfrankcarr
+1, ini sangat baik & diringkas. Hambatan untuk sebagian besar aplikasi berkinerja buruk jarang bahasa.
GrandmasterB
1
benar, tetapi jangan berpikir Java adalah solusi - Saya mengalami kemalangan untuk menggunakan banyak aplikasi 'Enterprise' dari perusahaan seperti Oracle. Hampir semuanya dapat diganti dengan aplikasi PHP OSS dengan sedikit pengurangan fungsionalitas, tetapi peningkatan besar dalam kinerja dan kegunaan.
gbjbaanb
3
@ gbjbaanb: Java bukan solusi dalam konteks ini karena tidak ada masalah. Dan apakah sesuatu itu open source atau tidak sama sekali tidak ada hubungannya dengan topik tersebut.
tdammers
@GrandmasterB ya dan tidak. Java misalnya, memiliki banyak primitif yang disinkronkan secara internal, dan PHP tidak. Dibutuhkan lebih banyak disiplin untuk menulis kode java yang dapat diskalakan. freemobile adalah contoh dunia nyata dari efek itu. Tetapi, karena skalabilitas tidak hanya bergantung pada frontend (database misalnya sangat penting di sini), Anda harus tetap memikirkannya.
deadalnix
13

Anda membingungkan lalu lintas ("situs web kecil dan menengah" biasanya berarti situs web dengan lalu lintas kecil hingga menengah), dengan tingkat komplikasi logika bisnis (situs web sederhana vs solusi perusahaan). Dalam kasus kedua, kinerja bukanlah faktor kunci.

Misalnya Facebook adalah situs web dengan lalu lintas tinggi, tetapi ini bukan aplikasi perusahaan. Di sisi lain ada sejumlah intranet berbasis pada server aplikasi Java, yang tidak akan mampu menangani lalu lintas situs web menengah sekalipun.

PHP yang berkinerja baik bukan pilihan terbaik, tapi juga tidak seburuk itu. Terutama membandingkan dengan bahasa dinamis lainnya. Namun, sekali lagi, kinerja mentah bukanlah faktor yang paling penting. Menciptakan situs web dengan lalu lintas tinggi lebih tentang mengoptimalkan skalabilitas pada tingkat arsitektur.


Mengapa PHP sangat dibenci oleh perusahaan? Ada beberapa penyebab, pertama itu reputasi keamanan yang mengerikan . Kedua adalah bahwa itu dianggap sebagai bahasa untuk amatir yang membuat kode spageti HTML-PHP jelek dan tidak terkelola. Persepsi itu tetap ada, meskipun ada kerangka kerja MVC yang matang. Saya kira memiliki penulis asli PHP berpendapat bahwa Anda tidak memerlukan kerangka kerja tidak membantu. Fakta bahwa para amatir yang tidak mengerti ini dengan sedikit kemampuan pemrograman tidak menyebut diri mereka "programmer PHP" juga tidak membantu. Alasan ketiga adalah bahwa setiap programmer yang berpengalaman akan setuju, bahwa PHP hanya dirancang dengan buruk sebagai bahasa. Anda dapat dengan jelas melihat bahwa itu dirancang oleh webmaster,

Dan ya, di perusahaan itu semua tentang integrasi sistem, di mana PHP juga tidak bersinar. Dengan upaya yang cukup Anda dapat membuat modul C. Ada jembatan PHP-Java, yang cukup membosankan untuk digunakan. Selain itu, Anda tidak punya banyak. Upaya untuk membuat Peningkatan :: PHP (integrasi dengan C ++) telah gagal. Klon-PHP yang berjalan pada JVM jauh dari sesuatu yang mendekati kompatibilitas 100% dengan PHP (sebagai catatan, tidak ada definisi bahasa PHP formal, satu-satunya referensi adalah implementasi default).

vartec
sumber
6

Tidak tahu mengapa orang mengklaim PHP untuk situs web kecil dan menengah. Sepengetahuan saya, ini tidak benar. Saya tahu beberapa situs web yang didukung PHP yang dimulai dari kecil, kemudian tumbuh menjadi top100 situs web di negara saya. Mereka masih menggunakan PHP dan tidak punya rencana untuk mengubah apa pun tentangnya.

Masalahnya, yang mungkin mendorong orang ke kesimpulan seperti itu adalah bahwa dalam kasus Java (dan saya kira juga dengan .NET) aplikasi scalling adalah istilah yang sering diangkat dalam dokumentasi dan literatur. Sebagian besar server aplikasi di luar sana mendukung beberapa bentuk pengelompokan yang memungkinkan penambahan cepat "tenaga kuda" seiring dengan pertumbuhan popularitas. Dalam hal PHP Anda harus membangun cluster sendiri. Anda dapat melakukannya dengan banyak cara, menggunakan komponen yang berbeda dan Anda harus tahu sedikit atau banyak tentang cara kerja PHP. Ini mungkin membuat orang berpikir, bahwa dengan PHP server tunggal (dan dengan demikian situs web kecil atau menengah) adalah jalan buntu untuk PHP.

Jacek Prucia
sumber
3

Tidak ada yang namanya aplikasi web perusahaan saja. Di dunia perusahaan Anda biasanya memiliki sistem perusahaan lengkap, di mana bagian web cukup kecil dibandingkan dengan keseluruhan sistem. Ada banyak sistem di bawah web yang melakukan pemrosesan batch, pesan antrian, integrasi perusahaan, gateway dan banyak lagi. Acara di atas mungkin tidak hanya ada

Sedangkan PHP baik untuk web tidak baik untuk jenis sistem terdistribusi lainnya. Dan karena Anda melakukan semua sistem ini di Java atau .NET, mudah juga untuk membangun tumpukan web di platform yang sama daripada di PHP.

m3th0dman
sumber
1

Saya akan mengatakan bahwa masalah dengan PHP berasal dari kinerja kurang dari sejarah kerentanan keamanan. Meskipun tidak diragukan lagi mungkin untuk menulis situs web dengan ukuran atau kompleksitas tertentu dalam PHP dan masih mempertahankan keamanan, seiring meningkatnya kompleksitas, menjaga keamanan cenderung menjadi lebih sulit.

Java, di sisi lain, dirancang dengan setidaknya beberapa ide tentang keamanan sejak hari pertama. Meskipun itu tidak sepenuhnya sesuai dengan sebagian besar penyebaran saat ini (pemikiran asli terutama tentang applet, bukan servelet) yang menekankan berarti fitur-fiturnya cenderung lebih cocok dengan menghasilkan kode aman. Dan, tentu saja, itu juga tidak berhenti - karena applet sebagian besar adalah masalah mati sekarang, Java telah didefinisikan ulang untuk menekankan peran sisi server yang sekarang (sebagian besar) menempati.

Sejak. NET setidaknya mencoba untuk bersaing secara langsung dengan Java, ia menyediakan banyak fitur dan kemampuan yang sama dalam hal ini. Anda dapat berdebat (dan penganut kedua kubu itu) tentang apakah Sun atau Microsoft melakukan pekerjaan yang lebih baik dalam hal ini, tetapi fakta sederhana bahwa keduanya memiliki tim yang benar - benar berusaha untuk mengerjakannya memberi mereka keuntungan yang cukup serius dibandingkan PHP dalam hal ini. menghormati.

Jerry Coffin
sumber
0

1) Kinerja: beberapa jawaban di sini menyesatkan pada titik itu.
Proyek Phalanger (yang saya gunakan dengan sukses di masa lalu) memungkinkan Anda untuk menggunakan kode C # dalam PHP dan sebaliknya, atau untuk sepenuhnya beralih dari satu ke bahasa lain. Anda mungkin harus membuat beberapa perubahan, tetapi karena mereka terus berusaha, itu menjadi lebih baik dan lebih baik.
Maksud saya adalah, mereka menemukan bahwa ada faktor rata-rata kecepatan 2.5 yang mendukung C # (atau. NET secara umum, VB akan melakukan hal yang sama, itu MSIL pada akhirnya).
Lihat tes mereka dengan Wordpress, itu menarik banyak pengembang.

Sekarang kita belum melihatnya, tetapi selalu ada pria yang akan memberi tahu Anda bahwa FaceBook ditulis dalam PHP. Salah. Awalnya, sampai mereka menyadari kesalahan mereka, dan menulis HipHop untuk mengubahnya menjadi C ++.

EDIT: Rupanya blok terakhir tidak jelas, jadi yang saya maksud adalah FaceBook IS ditulis dalam PHP, tetapi HipHop membuatnya RUN sebagai C ++, untuk meningkatkan kecepatan keseluruhan, KARENA PHP lambat.

2) Keamanan: Seperti yang telah dinyatakan, PHP memiliki sejarah panjang masalah keamanan.

3) Waktu pengembang: Membuat situs web dalam PHP cenderung lebih mudah, terutama dengan kerangka kerja dan semua "pembuat situs" yang tersedia. Membuat situs web PHP yang bagus, andal, dan aman adalah cerita lain.

Louis Kottmann
sumber
Sedangkan untuk hal Facebook / HipHop, tidak banyak berubah. Mereka masih menulis pernyataan PHP, bukan? Ada juga kompiler PHP ke Java. Jika saya mengkompilasi semua kode PHP saya dengan itu, apakah itu berarti situs saya benar-benar ditulis dalam Java?
Jacek Prucia
Itu tidak berarti itu Java, itu berarti dijalankan seperti itu.
Louis Kottmann
Oke, Anda benar, tetapi bisakah saya masih mengklaim bahwa situs saya ditulis dalam PHP? Jika ya, maka siapa pun juga dapat mengklaim Facebook ditulis dalam PHP. Dengan kata lain, itu semua bermuara pada bagaimana Anda memahami istilah "bahasa pemrograman". Apakah itu hanya kombinasi dari pernyataan yang valid atau apakah itu juga runtime enviroment. Saya lebih suka arti pertama dan itulah mengapa hal HipHop tidak banyak berubah bagi saya. Jadi cukup banyak saya yang Bung FaceBook Anda sebutkan :)
Jacek Prucia
Baiklah, saya akan membuatnya lebih jelas. Tetapi sebagai catatan, saya cukup yakin sebagian besar pembaca mengerti maksud saya.
Louis Kottmann
Bukan kesalahan menulis Facebook pada awalnya di PHP. Ketika mereka menemukan itu tidak bisa mengikuti skalabilitas yang mereka lihat, mereka memperbaiki masalah menggunakan HipHop. Saya kira ini berarti menggunakan PHP adalah pilihan yang sangat bagus untuk semua situs web. Yang mengatakan, Slashdot menggunakan perl lurus dan itu memecahkan masalah skala, wikipedia menggunakan PHP biasa dan juga tidak memiliki masalah skala.
gbjbaanb