PHP และประสิทธิภาพ


17

ฉันมักจะได้ยินว่า PHP เหมาะสำหรับเว็บไซต์ขนาดกลางและขนาดเล็กในขณะที่. NET และ Java สำหรับแอปพลิเคชันระดับองค์กร คำถามของฉันเกี่ยวกับ PHP ทำไม PHP จึงไม่ใช่ตัวเลือกที่ดีสำหรับเว็บแอปพลิเคชันระดับองค์กร เป็นเพราะถ้าเว็บแอปพลิเคชันใหญ่ขึ้น PHP จะช้าลงเนื่องจากเป็นภาษาที่ตีความ?

ฉันรู้ว่าโลกธุรกิจจะเลือก. NET หรือ J2EE เนื่องจากการรวมเข้ากับผลิตภัณฑ์ของพวกเขาและเพราะการบริการด้านหลังเป็นต้นอย่างไรก็ตามถ้าเราเพิ่งมี PHP สำหรับการสร้างเว็บไซต์และแอปพลิเคชันบนเว็บ เว็บไซต์ใหญ่?

ในระยะสั้นมีความสัมพันธ์ระหว่างประสิทธิภาพของ PHP และขนาดของเว็บไซต์หรือไม่ อะไรคือปัจจัยที่ทำให้ PHP ไม่เหมาะสำหรับเว็บไซต์ใหญ่?


1
Mediawiki (เครื่องมือของ wikipedia) เขียนด้วย PHP และทำให้มันทำงานได้ดี แต่นั่นไม่ได้พิสูจน์อะไรเลย อาจเป็นกรณีเฉพาะ
Michael K

2
@MichaeltheGhost ที่ใช้ไซต์ใน 50 อันดับแรกของ Alexa (และอาจจะมากกว่านั้นอีกเล็กน้อย) เป็นตัวอย่างที่ไม่ดีเพราะปริมาณของพวกเขาอยู่ในระดับที่รุนแรงซึ่งโซลูชั่นของพวกเขาได้รับการปรับแต่งและปรับตามระดับการรับส่งข้อมูลและไม่เหมือนกัน เทคโนโลยีอีกต่อไป
Ryathal

1
Facebook ก็ใช้ PHP เช่นกัน โปรดทราบด้วยว่านี่หมายถึงสิ่งต่าง ๆ ที่เกี่ยวกับความสามารถในการขยายระบบไม่ใช่ประสิทธิภาพ แต่คุณรู้ถึงความแตกต่างใช่มั้ย อีกตัวอย่างหนึ่งคือ freemobile ที่เขียนเว็บไซต์ใน PHP จาก Java เพื่อเหตุผลในการปรับขนาด
deadalnix

"ปัจจุบันรหัส PHP ส่วนใหญ่ในมีเดียวิกิที่มูลนิธิวิกิมีเดียใช้คอมไพเลอร์ HHVM JIT แม้ว่าบริการบางอย่างยังคงใช้ Zend Engine PHP อยู่" en.wikipedia.org/wiki/Wikipedia:FAQ/ เทคนิคคือสิ่งที่ Facebook สร้างขึ้นเพื่อเร่งความเร็ว php (มันเป็น php to c ++ ล่ามที่พวกเขารวบรวม) มันใช้งานได้คุณไม่สามารถพูดได้เพียงเพราะมันเขียนด้วย PHP ความเร็วจะเหมือนกันเสมอ มันขึ้นอยู่กับสิ่งที่คุณทำกับรหัสในความรู้สึกว่า ...
pqsk

คำตอบ:


19

ประสิทธิภาพอาจไม่ได้เป็นหนึ่งในปัจจัย สำหรับภาษาแบบไดนามิก PHP ทำงานได้ค่อนข้างดี มันอาจจะใช่หรือไม่ใช่เทคโนโลยีอื่นก็ได้ รูปแบบของแอปพลิเคชันนั้นแตกต่างจากการเปรียบเทียบโดยตรงกับ Java หรือ ASP.NET แม้ว่าจะมีความแตกต่างของความเร็วที่วัดได้ แต่ก็ไม่ใหญ่และอาจเป็นแบบเส้นตรงซึ่งหมายความว่าสามารถแก้ไขได้โดยการขว้างฮาร์ดแวร์เพิ่มเติม นอกจากนี้ภาษาการเขียนโปรแกรมเองมักไม่ค่อยมีปัญหาคอขวด - อัลกอริธึมการเข้าถึงฐานข้อมูลแบนด์วิดท์เครือข่ายและ I / O โดยทั่วไปถือเป็นผู้กระทำผิดปกติเว้นแต่คุณจะเขียน CPU ที่ใช้งานหนักอย่างแท้จริง

เหตุผลในการใช้ ASP.NET หรือ Java ผ่าน PHP ที่มีแนวโน้มมากขึ้น ได้แก่ :

  • การรวมแพลตฟอร์ม ASP.NET เสนอการผสานอย่างกว้างขวางกับ. NET และ Windows OS พื้นฐาน
  • จุดประสงค์ทั่วไป PHP ได้รับการออกแบบมาโดยเฉพาะสำหรับเว็บในขณะที่. NET และ Java เป็นแพลตฟอร์มวัตถุประสงค์ทั่วไป การใช้ Java หรือ. NET คุณสามารถตรึงทั้งหน้าเดสก์ท็อปและหน้าเว็บไว้บนโค้ดที่แชร์เดียวกันได้โดยใช้ความพยายามเพียงเล็กน้อยขณะที่ PHP ไม่เหมาะสำหรับการเขียนแอปพลิเคชันบนเดสก์ท็อป
  • คุณสมบัติการจัดรหัส Java และ. NET ถูกออกแบบมาสำหรับ OOP ตั้งแต่เริ่มต้นในขณะที่ OOP ใน PHP นั้นค่อนข้างจะเป็นสิ่งที่ตามมาภายหลัง PHP เปิดตัวเนมสเปซเมื่อเร็ว ๆ นี้และมีจำนวน จำกัด และเงอะงะเมื่อเทียบกับ. NET และ Java ที่มีให้ การเขียนโปรแกรมในรูปแบบองค์กรมักใช้ OOP อย่างมากซึ่งทำให้ PHP มีผู้สมัครน้อยลง

เหตุผลอีกประการที่ทำให้เห็นว่า PHP นั้นฟรี (เหมือนในเบียร์) และแพร่หลาย - ทุก บริษัท เว็บโฮสติ้งราคาถูกที่ใช้ร่วมกันมี PHP ในแพ็คเกจมาตรฐานของพวกเขา แต่เซิร์ฟเวอร์. NET หรือ Java จะต้องเสียค่าใช้จ่ายมากขึ้น ดังนั้นเว็บไซต์ขนาดเล็กจำนวนมากใช้ PHP ไม่ใช่เพราะมันเป็นเครื่องมือที่ดีที่สุดสำหรับงาน แต่เป็นเว็บไซต์เดียวที่อยู่ในมือ

นั่นไม่ได้หมายความว่า PHP ไม่เหมาะกับโครงการขนาดใหญ่ แต่ก็ไม่เข้ากับโปรแกรมแบบ 'enterprisey' จุดแข็งของมันอยู่ที่อื่นและถ้าคุณสามารถใช้ประโยชน์จากมันคุณสามารถสร้างแอพพลิเคชั่นขนาดใหญ่ได้อย่างง่ายดายเช่นเดียวกับเทคโนโลยีเว็บอื่น ๆ


2
หนึ่งการเล่นโวหารน้อยคุณสามารถรับ ASP.NET ที่ใช้ร่วมกันโฮสติ้งในราคาเดียวกับ LAMP ที่ใช้ร่วมกันพื้นที่ ปัญหาคือสถานที่แรกที่คนส่วนใหญ่พบเมื่อพวกเขากำลังค้นหาคนที่ทำการตลาดกับธุรกิจขนาดเล็กถึงขนาดกลางและมีราคาแพงกว่า
jfrankcarr

+1 นี่เป็นคำพูดที่ดี & สรุป คอขวดสำหรับแอปพลิเคชั่นที่มีประสิทธิภาพต่ำที่สุดนั้นไม่ค่อยมีภาษา
GrandmasterB

1
จริง แต่ไม่คิดว่า Java เป็นวิธีแก้ปัญหา - ฉันมีโชคร้ายที่ใช้แอพ 'Enterprise' จำนวนมากจาก บริษัท เช่น Oracle เกือบทุกคนสามารถถูกแทนที่ด้วยแอป PHP OSS พร้อมกับลดฟังก์ชันการทำงานลงเล็กน้อย แต่เพิ่มประสิทธิภาพและ usabaility เพิ่มขึ้นอย่างมาก
gbjbaanb

3
@gbjbaanb: Java ไม่ใช่วิธีแก้ปัญหาในบริบทนี้เนื่องจากไม่มีปัญหา และไม่ว่าจะมีบางอย่างเป็นโอเพ่นซอร์สหรือไม่มีอะไรเกี่ยวข้องกับหัวข้อ
tdammers

@GrandmasterB ใช่และไม่ใช่ Java เช่นมี primitives ตรงกันภายในจำนวนมากและ PHP ไม่ มันต้องมีวินัยมากขึ้นในการเขียนโค้ดจาวาที่ปรับขนาดได้ Freemobile เป็นตัวอย่างจริงของผลกระทบนั้น แต่เนื่องจากความสามารถในการปรับขนาดนั้นไม่ได้ขึ้นอยู่กับส่วนหน้า (ฐานข้อมูลเป็นสิ่งสำคัญมากที่นี่) คุณจึงต้องคิดถึงมันอยู่ดี
deadalnix

13

คุณกำลังสับสนกับการรับส่งข้อมูล ("เว็บไซต์ขนาดเล็กและขนาดกลาง" มักหมายถึงเว็บไซต์ที่มีปริมาณข้อมูลขนาดเล็กถึงขนาดกลาง) โดยมีระดับความซับซ้อนของตรรกะทางธุรกิจ (เว็บไซต์ที่ง่ายและโซลูชันระดับองค์กร) ในกรณีที่สองประสิทธิภาพไม่ใช่ปัจจัยสำคัญ

ตัวอย่างเช่น Facebook เป็นเว็บไซต์ที่มีปริมาณการใช้งานสูง แต่ไม่ใช่แอพสำหรับองค์กร ในทางกลับกันมีอินทราเน็ตมากมายที่ใช้เซิร์ฟเวอร์แอปพลิเคชัน Java ซึ่งจะไม่สามารถจัดการปริมาณการใช้งานของเว็บไซต์ขนาดกลางได้

ประสิทธิภาพที่ฉลาด PHP ไม่ใช่ตัวเลือกที่ดีที่สุด แต่ก็ไม่ได้แย่ขนาดนั้น โดยเฉพาะเมื่อเปรียบเทียบกับภาษาไดนามิกอื่น ๆ อย่างไรก็ตามประสิทธิภาพของวัตถุดิบไม่ใช่ปัจจัยที่สำคัญที่สุดอีกครั้ง การสร้างเว็บไซต์ที่มีปริมาณการใช้งานสูงนั้นเป็นเรื่องเกี่ยวกับการปรับให้เหมาะสมที่สุดสำหรับความยืดหยุ่นในระดับสถาปัตยกรรม


ทำไม PHP จึงถูกองค์กรรังเกียจ? มีสาเหตุบางประการแรกจะเป็นของชื่อเสียงของการรักษาความปลอดภัยที่น่ากลัว ประการที่สองคือมันถูกมองว่าเป็นภาษาสำหรับมือสมัครเล่นที่สร้างโค้ดสปาเก็ตตี้ HTML-PHP ที่น่าเกลียดและไม่สามารถจัดการได้ การรับรู้นั้นยังคงมีอยู่แม้ว่าจะมีกรอบ MVC ที่เป็นผู้ใหญ่แล้วก็ตาม ฉันเดาว่าการมีผู้เขียนต้นฉบับของ PHP ยืนยันว่าคุณไม่ต้องการกรอบไม่ช่วย ความจริงที่ว่ามือสมัครเล่นที่ไร้ทักษะเหล่านี้มีทักษะการเขียนโปรแกรมน้อยถึงไม่มีเลยเรียกตัวเองว่า "โปรแกรมเมอร์ PHP" ไม่ได้ช่วยอะไรเช่นกัน เหตุผลที่สามคือโปรแกรมเมอร์ที่มีประสบการณ์จะยอมรับว่า PHP นั้นได้รับการออกแบบมาไม่ดีเป็นภาษา คุณสามารถเห็นได้อย่างชัดเจนว่ามันถูกออกแบบโดยผู้ดูแลเว็บ

และในองค์กรก็คือการรวมระบบเข้าด้วยกันโดยที่ PHP ไม่ได้ส่องแสงเช่นกัน ด้วยความพยายามเพียงพอคุณสามารถสร้างโมดูล C มีสะพาน PHP-Java ซึ่งค่อนข้างน่าเบื่อที่จะใช้ ยิ่งกว่านั้นคุณมีไม่มากนัก ความพยายามในการสร้าง Boost :: PHP (การรวมกับ C ++) ล้มเหลว PHP-clones ที่ทำงานบน JVM นั้นอยู่ห่างไกลจากความสามารถในการเข้ากันได้กับ PHP 100% (ในฐานะที่เป็นข้อความด้านข้างไม่มีคำจำกัดความของภาษา PHP อย่างเป็นทางการ


6

ไม่รู้เลยว่าทำไมคนถึงเรียกร้อง PHP สำหรับเว็บไซต์ขนาดเล็กและขนาดกลาง เพื่อความรู้ที่ดีที่สุดของฉันสิ่งนี้ไม่เป็นความจริง ฉันรู้ว่าบางเว็บไซต์ที่ได้รับการสนับสนุนจาก PHP เริ่มเล็กแล้วก็กลายเป็นเว็บไซต์ยอดนิยม 100 แห่งในประเทศของฉัน พวกเขายังคงใช้ PHP และไม่มีแผนที่จะเปลี่ยนแปลงอะไรเลย

สิ่งที่อาจทำให้ผู้คนสรุปได้ว่าในกรณีของ Java (และฉันเดาด้วย. NET) การ scalling แอปพลิเคชันเป็นคำที่นำมาบ่อยในเอกสารและวรรณกรรม แอพพลิเคชันเซิร์ฟเวอร์ส่วนใหญ่ออกมารองรับการจัดกลุ่มบางรูปแบบซึ่งช่วยให้ "แรงม้า" เพิ่มขึ้นอย่างรวดเร็วพร้อมกับความนิยมที่เพิ่มขึ้น ในกรณีของ PHP คุณต้องสร้างคลัสเตอร์ด้วยตัวเอง คุณสามารถทำได้หลายวิธีโดยใช้ส่วนประกอบที่แตกต่างกันและคุณต้องรู้เพียงเล็กน้อยหรือสองอย่างเกี่ยวกับการทำงานภายในของ PHP สิ่งนี้อาจทำให้คนคิดว่าด้วย PHP เซิร์ฟเวอร์เดียว (และเว็บไซต์ขนาดเล็กหรือขนาดกลาง) จึงเป็นจุดจบของ PHP


3

ไม่มีสิ่งนั้นเป็นเว็บแอปพลิเคชันสำหรับองค์กรเท่านั้น ในโลกธุรกิจคุณมักจะมีระบบขององค์กรที่สมบูรณ์ซึ่งส่วนของเว็บค่อนข้างเล็กเมื่อเทียบกับทั้งระบบ มีหลายระบบที่อยู่ภายใต้เว็บที่ทำการประมวลผลเป็นชุดการส่งข้อความคิวการรวมระบบขององค์กรเกตเวย์และอื่น ๆ อีกมากมาย เหตุการณ์ที่ด้านบนอาจมีไม่เพียง

ในขณะที่ PHP นั้นดีสำหรับเว็บ แต่มันก็ไม่ดีสำหรับระบบกระจายอื่น ๆ และเนื่องจากคุณทำระบบเหล่านี้ทั้งหมดใน Java หรือ. NET มันง่ายที่จะสร้างเว็บสแต็คบนแพลตฟอร์มเดียวกันมากกว่าใน PHP


1

ฉันจะบอกว่าปัญหาเกี่ยวกับ PHP เกิดจากประสิทธิภาพการทำงานน้อยกว่าประวัติศาสตร์ของช่องโหว่ความปลอดภัย แม้ว่าจะเป็นไปได้อย่างแน่นอนที่จะเขียนเว็บไซต์ที่มีขนาดหรือความซับซ้อนเฉพาะใน PHP และยังคงรักษาความปลอดภัยเมื่อความซับซ้อนเพิ่มขึ้นการรักษาความปลอดภัยมีแนวโน้มที่จะยากขึ้น

ในทางตรงกันข้าม Java ได้รับการออกแบบอย่างน้อยแนวคิดบางอย่างเกี่ยวกับความปลอดภัยจากวันแรก แม้ว่าสิ่งเหล่านี้จะไม่เหมาะกับการนำไปใช้งานในปัจจุบันส่วนใหญ่ (ความคิดดั้งเดิมนั้นอยู่ที่แอปเพล็ตเป็นหลัก แต่ไม่ใช่ servelets) ซึ่งการเน้นนั้นหมายความว่าคุณสมบัติต่างๆ และแน่นอนว่ามันไม่ได้หยุดนิ่งเช่นกันเนื่องจากแอปเพล็ตส่วนใหญ่เป็นปัญหาที่ตายแล้วตอนนี้ Java ได้รับการกำหนดใหม่เพื่อเน้นบทบาทฝั่งเซิร์ฟเวอร์ตอนนี้ (ส่วนใหญ่) ครอบครอง

ตั้งแต่. NET พยายามแข่งขันกับ Java โดยตรงอย่างน้อยก็ให้คุณสมบัติและความสามารถประเภทเดียวกันในเรื่องนี้ คุณสามารถโต้เถียง (และสมัครพรรคพวกทั้งสองค่าย) ว่า Sun หรือ Microsoft ทำงานได้ดีขึ้นในเรื่องนี้ แต่ความจริงง่ายๆที่ทั้งสองมีทีมงานที่พยายามจะทำงานจริง ๆทำให้พวกเขาได้เปรียบอย่างจริงจังกับ PHP ในเรื่องนี้ เคารพ.


0

1) ประสิทธิภาพการทำงาน: คำตอบหลายข้อที่นี่ทำให้เข้าใจผิดในจุดนั้น
โครงการ Phalanger (ซึ่งฉันเคยประสบความสำเร็จในอดีต) ช่วยให้คุณใช้รหัส C # ภายใน PHP และในทางกลับกันหรือเปลี่ยนจากภาษาหนึ่งเป็นภาษาอื่นอย่างสมบูรณ์ คุณอาจจะต้องทำการเปลี่ยนแปลงบางอย่าง แต่เมื่อพวกเขาทำงานต่อไปมันก็จะดีขึ้นเรื่อย ๆ
ประเด็นของฉันคือพวกเขาพบว่ามีค่าเฉลี่ย 2.5 ความเร็วในการสนับสนุน C # (หรือ. NET โดยทั่วไป VB จะทำเช่นเดียวกันก็คือ MSIL ในท้ายที่สุด)
ตรวจสอบการทดสอบด้วย Wordpress มันดึงดูดผู้พัฒนาจำนวนมาก

ตอนนี้เรายังไม่เห็นเขา แต่มีเพื่อนที่จะบอกคุณเสมอว่า FaceBook เขียนด้วย PHP ไม่ถูกต้อง. เดิมทีมันจนกระทั่งพวกเขาตระหนักถึงความผิดพลาดของพวกเขาและเขียน HipHop เพื่อแปลงเป็น C ++

แก้ไข:เห็นได้ชัดว่าบล็อกสุดท้ายไม่ชัดเจนดังนั้นสิ่งที่ฉันหมายถึงคือ FaceBook ISเขียนใน PHP แต่ HipHop ทำให้RUNเป็น C ++ เพื่อปรับปรุงความเร็วโดยรวมเพราะ BECAUSE PHP ช้า

2) ความปลอดภัย: ตามที่ระบุไว้แล้ว PHP มีประวัติด้านความปลอดภัยที่ยาวนาน

3) เวลา Developper: การทำให้เว็บไซต์ใน PHP มีแนวโน้มที่จะง่ายขึ้นโดยเฉพาะกับเฟรมเวิร์กและ "ผู้สร้างไซต์" ทั้งหมดที่มี การสร้างเว็บไซต์ PHP ที่ดีน่าเชื่อถือและปลอดภัยเป็นอีกเรื่องหนึ่ง


สำหรับสิ่งที่ Facebook / HipHop นั้นไม่ได้เปลี่ยนแปลงอะไรมาก พวกเขายังเขียนคำสั่ง PHP ใช่มั้ย นอกจากนี้ยังมีคอมไพเลอร์ PHP ถึง Java ถ้าฉันรวบรวมโค้ด PHP ของฉันด้วยหมายความว่าเว็บไซต์ของฉันเขียนด้วยภาษาจาวาจริงๆหรือไม่?
Jacek Prucia

มันไม่ได้หมายความว่ามันเป็น Java แต่ก็หมายความว่ามันจะทำงานเช่นนั้น
Louis Kottmann

ตกลงคุณพูดถูก แต่ฉันยังสามารถอ้างว่าเว็บไซต์ของฉันเขียนด้วย PHP ได้หรือไม่? ถ้าใช่แล้วทุกคนสามารถอ้างสิทธิ์ Facebook ได้ด้วย PHP กล่าวอีกอย่างคือทั้งหมดนี้ทำให้คุณเข้าใจคำว่า "ภาษาโปรแกรม" มันเป็นเพียงการรวมกันของงบที่ถูกต้องหรือเป็นสภาพแวดล้อมรันไทม์ ฉันชอบความหมายแรกและนั่นคือเหตุผลที่สิ่งฮิปฮอปไม่ได้เปลี่ยนแปลงอะไรมากมายสำหรับฉัน ดังนั้นสวยมากฉันว่า Facebook เพื่อนที่คุณกล่าวถึง :)
Jacek Prucia

เอาล่ะฉันจะทำให้ชัดเจนขึ้น แต่สำหรับบันทึกฉันค่อนข้างมั่นใจว่าผู้อ่านส่วนใหญ่เข้าใจจุดของฉัน
หลุยส์ Kottmann

การเขียน Facebook ใน PHP เป็นเรื่องผิดปกติ เมื่อพวกเขาพบว่ามันไม่สามารถปรับขนาดได้ตามที่พวกเขาเห็นพวกเขาจะแก้ไขปัญหาโดยใช้ HipHop ฉันคิดว่านี่หมายถึงการใช้ PHP เป็นตัวเลือกที่ดีมากสำหรับทุกเว็บไซต์ ที่กล่าวว่า Slashdot ใช้ Perl ตรงและมันจะแก้ปัญหาระดับวิกิพีเดียใช้ PHP ธรรมดาและมันก็ไม่มีปัญหาระดับ
gbjbaanb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.