PHP và hiệu suất


17

Tôi luôn nghe rằng PHP dành cho các trang web vừa và nhỏ trong khi .NET và Java cho các ứng dụng doanh nghiệp. Câu hỏi của tôi là về PHP. Tại sao PHP không phải là một lựa chọn tốt cho các ứng dụng web doanh nghiệp? Có phải bởi vì nếu ứng dụng web trở nên lớn hơn thì PHP sẽ chậm hơn vì nó là ngôn ngữ được giải thích?

Tôi biết rằng thế giới doanh nghiệp sẽ chọn .NET hoặc J2EE vì tích hợp với các sản phẩm của họ và vì các dịch vụ hỗ trợ, v.v. Tuy nhiên, nếu chúng ta chỉ có PHP để xây dựng trang web và ứng dụng web thì làm sao chúng ta có thể sử dụng nó để hoạt động tốt với trang web lớn?

Nói tóm lại, có mối quan hệ nào giữa hiệu năng của PHP và kích thước của trang web không? Các yếu tố làm cho PHP không phải là lựa chọn phù hợp cho các trang web lớn là gì?


1
Mediawiki (công cụ của wikipedia) được viết bằng PHP và họ đã làm cho nó hoạt động tốt, nhưng điều đó không chứng minh được điều gì. Có thể là một trường hợp thích hợp.
Michael K

2
@MichaeltheGhost sử dụng các trang web trong top 50 của Alexa (và thậm chí nhiều hơn một chút) là những ví dụ kém vì khối lượng của chúng ở mức cực đoan đến mức các giải pháp của chúng được tùy chỉnh cao và điều chỉnh tốt cho mức lưu lượng truy cập đó và không thực sự giống nhau công nghệ nữa.
Ryathal

1
Facebook cũng đang sử dụng PHP. Cũng lưu ý rằng điều này có nghĩa là những điều về khả năng mở rộng, không phải hiệu suất, nhưng bạn biết sự khác biệt, phải không? Một ví dụ khác là freemobile, viết lại trang web của mình bằng PHP từ Java, vì lý do khả năng mở rộng.
deadalnix

"Hiện tại, hầu hết mã PHP trong Mediawiki tại Wikimedia Foundation đều sử dụng trình biên dịch HHVM JIT, mặc dù một số dịch vụ vẫn tiếp tục sử dụng Zend Engine PHP." vi.wikipedia.org/wiki/Wikipedia:FAQ/T kỹ thuật đó là những gì Facebook tạo ra để tăng tốc php (đó là trình dịch từ php sang c ++ mà sau đó họ biên dịch). nó hoạt động, chỉ là bạn không thể nói chỉ vì nó được viết bằng php, tốc độ sẽ luôn như nhau. Nó phụ thuộc vào những gì bạn làm với mã theo nghĩa đó ...
pqsk

Câu trả lời:


19

Hiệu suất có lẽ không phải là một trong những yếu tố. Đối với một ngôn ngữ động, PHP thực sự hoạt động khá tốt; tùy thuộc vào nhiệm vụ, nó có thể hoặc không thể đánh bại các công nghệ khác. Mô hình ứng dụng đơn giản là quá khác biệt để so sánh nó trực tiếp với Java hoặc ASP.NET. Ngay cả khi có sự khác biệt về tốc độ có thể đo được, nó không lớn và có lẽ là tuyến tính, điều đó có nghĩa là nó có thể được giải quyết bằng cách ném thêm phần cứng vào nó. Ngoài ra, chính ngôn ngữ lập trình hiếm khi bị nghẽn cổ chai - thuật toán, truy cập cơ sở dữ liệu, băng thông mạng và I / O nói chung là những thủ phạm thông thường, trừ khi bạn đang viết một cách thực sự tốn nhiều CPU.

Các lý do để sử dụng ASP.NET hoặc Java trên PHP có nhiều khả năng bao gồm:

  • Tích hợp nền tảng. ASP.NET cung cấp tích hợp rộng rãi với .NET và HĐH Windows bên dưới.
  • Mục đích chung. PHP được thiết kế dành riêng cho web, trong khi .NET và Java là các nền tảng có mục đích chung. Sử dụng Java hoặc .NET, bạn có thể xử lý cả giao diện máy tính để bàn và web trên cùng một mã được chia sẻ với ít nỗ lực, trong khi PHP không phù hợp để viết các ứng dụng máy tính để bàn.
  • Mã tổ chức tính năng. Java và .NET được thiết kế cho OOP ngay từ đầu, trong khi OOP trong PHP có phần nào đó. PHP đã giới thiệu các không gian tên rất gần đây và chúng bị giới hạn và vụng về so với những gì .NET và Java cung cấp. Lập trình kiểu doanh nghiệp thường phụ thuộc rất nhiều vào OOP, điều này khiến PHP trở thành ứng cử viên ít hơn.

Một lý do khác cho hiệu ứng cảm nhận là PHP miễn phí (như bia) và có mặt khắp nơi - mọi công ty lưu trữ web chia sẻ giá rẻ đều có PHP trong gói tiêu chuẩn của họ, nhưng máy chủ .NET hoặc Java sẽ khiến bạn tốn nhiều tiền hơn. Do đó, một lượng lớn các trang web nhỏ sử dụng PHP, không phải vì đó là công cụ tốt nhất cho công việc, mà là công cụ duy nhất trong tay.

Điều đó không có nghĩa là PHP không phù hợp với các dự án lớn - nó không phù hợp với kiểu lập trình 'enterprisey'. Điểm mạnh của nó nằm ở chỗ khác và nếu bạn có thể tận dụng chúng, bạn có thể dễ dàng xây dựng các ứng dụng quy mô lớn như bất kỳ công nghệ web nào khác.


2
Một chút ngụy biện, bạn có thể nhận được chia sẻ lưu trữ ASP.NET với giá tương đương với lưu trữ chia sẻ LAMP. Vấn đề là nơi đầu tiên mà hầu hết mọi người tìm thấy khi họ tìm kiếm là những nơi được bán cho doanh nghiệp vừa và nhỏ và đắt tiền hơn.
jfrankcarr

+1, điều này được nói rất rõ & tóm tắt. Nút thắt cho hầu hết các ứng dụng hoạt động kém hiếm khi là ngôn ngữ.
GrandmasterB

1
đúng, nhưng đừng nghĩ Java là một giải pháp - tôi đã không may sử dụng nhiều ứng dụng 'Doanh nghiệp' từ các công ty như Oracle. Gần như tất cả trong số chúng có thể được thay thế bằng ứng dụng OSS PHP với một chút giảm chức năng, nhưng sự gia tăng lớn về hiệu suất và sự hữu dụng.
gbjbaanb

3
@gbjbaanb: Java không phải là một giải pháp trong bối cảnh này vì không có vấn đề gì. Và cho dù một cái gì đó là nguồn mở hay không hoàn toàn không liên quan gì đến chủ đề này.
tdammers 17/03 '

@GrandmasterB có và không. Ví dụ, Java có rất nhiều nguyên thủy được đồng bộ hóa nội bộ và PHP thì không. Nó đòi hỏi nhiều kỷ luật hơn để viết mã java có thể mở rộng. freemobile là một ví dụ thực tế về hiệu ứng đó. Nhưng, vì khả năng mở rộng không chỉ phụ thuộc vào frontend (ví dụ cơ sở dữ liệu rất quan trọng ở đây) nên bạn cần phải suy nghĩ về nó.
deadalnix

13

Bạn đang nhầm lẫn lưu lượng truy cập ("trang web vừa và nhỏ" thường có nghĩa là một trang web có lưu lượng truy cập nhỏ đến trung bình), với mức độ phức tạp logic kinh doanh (trang web đơn giản so với giải pháp doanh nghiệp). Trong trường hợp thứ hai hiệu suất không phải là yếu tố quan trọng.

Ví dụ: Facebook là trang web có lưu lượng truy cập cao, nhưng đây không phải là ứng dụng dành cho doanh nghiệp. Mặt khác, có rất nhiều mạng nội bộ dựa trên các máy chủ ứng dụng Java, sẽ không thể xử lý lưu lượng truy cập của trang web vừa phải.

PHP thông minh về hiệu năng không phải là lựa chọn tốt nhất, nhưng nó cũng không tệ. Đặc biệt là so sánh với các ngôn ngữ năng động khác. Tuy nhiên, một lần nữa, hiệu suất thô không phải là yếu tố quan trọng nhất. Tạo các trang web có lưu lượng truy cập cao là nhiều hơn về việc tối ưu hóa khả năng mở rộng ở cấp độ kiến ​​trúc.


Tại sao PHP bị doanh nghiệp coi thường như vậy? Có rất ít nguyên nhân, đầu tiên sẽ là danh tiếng bảo mật khủng khiếp . Thứ hai là nó được coi là một ngôn ngữ cho những người nghiệp dư tạo ra mã spaghetti HTML-PHP xấu xí, không thể quản lý được. Nhận thức đó vẫn tồn tại, mặc dù có các khung MVC trưởng thành. Tôi đoán việc tác giả gốc của PHP lập luận rằng bạn không cần một khung công tác không giúp ích. Thực tế là những người nghiệp dư không biết gì về kỹ năng lập trình này tự gọi mình là "lập trình viên PHP" cũng không giúp được gì. Lý do thứ ba là bất kỳ lập trình viên có kinh nghiệm nào cũng đồng ý, rằng PHP chỉ được thiết kế tồi như một ngôn ngữ. Bạn có thể thấy rõ rằng nó được thiết kế bởi một quản trị trang web,

Và vâng, trong doanh nghiệp, tất cả là về tích hợp hệ thống, nơi PHP cũng không tỏa sáng. Với đủ nỗ lực, bạn có thể tạo các mô-đun C. Có cầu nối PHP-Java, khá tẻ nhạt khi sử dụng. Ngoài ra bạn không có nhiều. Nỗ lực tạo Boost :: PHP (tích hợp với C ++) đã thất bại. Các bản sao PHP chạy trên JVM khác xa với khả năng tương thích 100% với PHP (như một lưu ý phụ, không có định nghĩa ngôn ngữ PHP chính thức, tham chiếu duy nhất là triển khai mặc định).


6

Không biết tại sao mọi người tuyên bố PHP là dành cho các trang web vừa và nhỏ. Theo hiểu biết tốt nhất của tôi, điều này không đúng. Tôi biết một số trang web được PHP hỗ trợ bắt đầu nhỏ, sau đó phát triển thành top100 trang web ở nước tôi. Họ vẫn sử dụng PHP và không có kế hoạch thay đổi bất cứ điều gì về nó.

Vấn đề có thể khiến mọi người đi đến kết luận như vậy là trong trường hợp Java (và tôi cũng đoán bằng ứng dụng .NET), đó là một thuật ngữ thường được đưa ra trong tài liệu và tài liệu. Hầu hết các máy chủ ứng dụng ngoài kia đều hỗ trợ một số hình thức phân cụm cho phép bổ sung "mã lực" nhanh chóng cùng với sự tăng trưởng phổ biến. Trong trường hợp PHP bạn phải tự xây dựng cụm. Bạn có thể làm điều đó theo nhiều cách, sử dụng các thành phần khác nhau và bạn phải biết một hoặc hai về hoạt động bên trong của PHP. Điều này có thể khiến mọi người nghĩ rằng, với máy chủ đơn PHP (và do đó trang web nhỏ hoặc vừa) là một ngõ cụt cho PHP.


3

Không có những thứ như ứng dụng web doanh nghiệp. Trong thế giới doanh nghiệp, bạn thường có một hệ thống doanh nghiệp đầy đủ, trong đó phần web khá nhỏ so với toàn bộ hệ thống. Có nhiều hệ thống bên dưới web thực hiện xử lý hàng loạt, nhắn tin hàng đợi, tích hợp doanh nghiệp, cổng thông tin và nhiều hơn nữa. Sự kiện ở trên cùng có thể không chỉ có

Trong khi PHP tốt cho web thì không tốt cho các loại hệ thống phân tán khác. Và vì bạn làm tất cả các hệ thống này bằng Java hoặc .NET, thật dễ dàng để xây dựng ngăn xếp web trên cùng một nền tảng thay vì trong PHP.


1

Tôi muốn nói rằng các vấn đề với PHP xuất phát từ hiệu năng ít hơn so với lịch sử các lỗ hổng bảo mật. Mặc dù chắc chắn có thể viết một trang web với bất kỳ kích thước hoặc độ phức tạp cụ thể nào trong PHP và vẫn duy trì bảo mật, vì độ phức tạp tăng lên, việc duy trì bảo mật có xu hướng trở nên khó khăn hơn.

Mặt khác, Java được thiết kế với ít nhất một số ý tưởng về bảo mật ngay từ ngày đầu. Mặc dù những thứ đó không phù hợp hoàn toàn với hầu hết các triển khai hiện tại (suy nghĩ ban đầu chủ yếu xoay quanh các applet chứ không phải các dịch vụ), sự nhấn mạnh đó có nghĩa là các tính năng của nó có xu hướng phù hợp hơn với việc tạo mã bảo mật. Và, tất nhiên, nó cũng không đứng yên - vì các applet hầu hết là vấn đề chết người, Java đã được định nghĩa lại để nhấn mạnh vai trò phía máy chủ mà hiện tại (chủ yếu) chiếm giữ.

Do .NET ít nhất cố gắng cạnh tranh gần như trực tiếp với Java, nên nó cung cấp nhiều tính năng và khả năng tương tự về vấn đề này. Bạn có thể tranh luận (và tuân thủ cả hai phe làm) về việc Sun hay Microsoft làm tốt hơn về vấn đề này, nhưng thực tế đơn giản là cả hai nhóm người thực sự cố gắng làm việc đều mang lại cho họ một lợi thế khá nghiêm trọng so với PHP trong việc này sự tôn trọng.


0

1) Hiệu suất: một số câu trả lời ở đây đang bị đánh lừa về điểm đó.
Dự án Phalanger (mà tôi đã sử dụng thành công trong quá khứ) cho phép bạn sử dụng mã C # trong PHP và ngược lại hoặc chuyển hoàn toàn từ ngôn ngữ này sang ngôn ngữ khác. Bạn có thể sẽ phải thực hiện một số thay đổi, nhưng khi họ tiếp tục làm việc với nó, nó sẽ ngày càng tốt hơn.
Quan điểm của tôi là, họ phát hiện ra rằng có một yếu tố trung bình là 2,5 tốc độ có lợi cho C # (hay nói chung là .NET, VB sẽ làm như vậy, cuối cùng là MSIL).
Kiểm tra thử nghiệm của họ với Wordpress, nó đã thu hút rất nhiều nhà phát triển.

Bây giờ chúng tôi chưa thấy anh ta, nhưng luôn có anh chàng sẽ nói với bạn rằng FaceBook được viết bằng PHP. Sai lầm. Ban đầu, cho đến khi họ nhận ra sai lầm của mình và đã viết HipHop để chuyển đổi nó thành C ++.

EDIT: Rõ ràng khối cuối cùng không rõ ràng, vì vậy điều tôi muốn nói là FaceBook IS được viết bằng PHP, nhưng HipHop làm cho nó CHẠY thành C ++, để cải thiện tốc độ tổng thể, BECAUSE PHP chậm.

2) Bảo mật: Như đã nói, PHP có một lịch sử lâu dài về các vấn đề bảo mật.

3) Thời gian của người phát triển: Việc tạo một trang web bằng PHP có xu hướng dễ dàng hơn, đặc biệt là với các khung công tác và tất cả các "người xây dựng trang web" có sẵn. Làm cho một trang web PHP tốt, đáng tin cậy và an toàn là một câu chuyện khác.


Đối với điều Facebook / HipHop, nó không thay đổi nhiều. Họ vẫn viết các câu lệnh PHP phải không? Ngoài ra còn có trình biên dịch PHP sang Java. Nếu tôi biên dịch tất cả mã PHP của mình với nó, điều đó có nghĩa là trang web của tôi thực sự được viết bằng Java?
Jacek Prucia

Nó không có nghĩa là nó là Java, nó có nghĩa là nó thực thi như vậy.
Louis Kottmann

Ok, bạn nói đúng, nhưng tôi vẫn có thể khẳng định rằng trang web của tôi được viết bằng PHP? Nếu có, thì bất kỳ ai cũng có thể tuyên bố Facebook được viết bằng PHP. Nói cách khác, tất cả tập trung vào cách bạn hiểu thuật ngữ "ngôn ngữ lập trình". Có phải nó chỉ là sự kết hợp của các câu lệnh hợp lệ hay nó cũng là môi trường thời gian chạy. Tôi thích ý nghĩa đầu tiên và đó là lý do tại sao điều HipHop không thay đổi nhiều đối với tôi. Vì vậy khá nhiều tôi rằng FaceBook anh chàng mà bạn đề cập :)
Jacek Prucia

Được rồi, tôi sẽ làm cho nó rõ ràng hơn. Nhưng đối với hồ sơ, tôi khá chắc chắn rằng hầu hết các độc giả hiểu quan điểm của tôi.
Louis Kottmann

Đó không phải là một sai lầm khi viết Facebook ban đầu bằng PHP. Khi họ thấy không thể theo kịp khả năng mở rộng mà họ đã thấy, họ đã khắc phục sự cố bằng HipHop. Tôi đoán điều này có nghĩa là sử dụng PHP là một lựa chọn rất tốt cho tất cả các trang web. Điều đó nói rằng, Slashdot sử dụng perl thẳng và nó đã giải quyết được vấn đề tỷ lệ, wikipedia sử dụng PHP đơn giản và nó cũng không có vấn đề về quy mô.
gbjbaanb
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.