2010-01-05 36 views
16

Có các lựa chọn thay thế nào cho PHP hoạt động nhanh hơn và có bộ tính năng hơi giống nhau (như hỗ trợ RDBMS thông thường, Curl, Regex, v.v ...) không?Các lựa chọn thay thế PHP?

Điều gì về mã hóa trang web trong C? Làm thế nào mà làm việc ra? Nền tảng đó có độc lập và hoạt động trên mỗi máy chủ không?

+7

Có lẽ bạn nên chỉ ra những vấn đề bạn gặp phải (nếu có) với PHP – Rad

+1

Thông thường, nút cổ chai đang chờ cơ sở dữ liệu. Hồ sơ ứng dụng/trang web của bạn cũng thấy những gì đang nắm giữ nó. –

+0

Bạn nên chỉ ra những vấn đề bạn đang gặp phải với PHP. Và xem xét kỹ thuật bất khả tri ngôn ngữ nào được sử dụng để cải thiện hiệu suất ứng dụng web - http://developer.yahoo.com/performance/ – igouy

Trả lời

8

"Có những lựa chọn thay thế cho PHP" - Có

"... mà thực hiện nhanh hơn ..." - Có

"... cùng tính năng thiết lập ..." - Không - điều đó sẽ làm cho PHP thừa.

Bạn đang đặt một câu hỏi rất rộng. Có rất nhiều ngôn ngữ ngoài đó hỗ trợ tất cả các loại DBMS, PCRE và các công cụ khác nữa.

"Điều gì về việc mã hóa các trang web trong C? Làm thế nào nó hoạt động? Nền tảng đó có độc lập và hoạt động trên mỗi máy chủ không?"

  • Không có nền tảng nào không độc lập với nền tảng.

Rất khó để chỉ cho bạn theo một hướng cụ thể dựa trên một câu hỏi đa dạng như vậy.

Bạn có thể muốn đọc:

http://benchmarksgame.alioth.debian.org/

Nhưng lưu ý rằng hầu hết các chi phí của phần mềm nằm trong phát triển - phần cứng là rẻ - vì vậy có khả năng thực hiện một cái gì đó trong một nửa dòng mã sẽ được ồ ạt có lợi hơn cho hầu hết mọi người hơn gấp đôi hiệu suất.

Cũng có những ràng buộc và/hoặc lợi thế ít rõ ràng hơn trong việc sử dụng các ngôn ngữ cụ thể - ví dụ:

http://www.oreillynet.com/ruby/blog/2007/09/7_reasons_i_switched_back_to_p_1.html

C.

+11

Urk, tôi ghét bài viết đó. "7 lý do tôi chuyển về PHP" liên tục được trình bày như một loại tấn công nào đó trên Rails, khi nó không - đó là một minh chứng cho sự thiếu hiểu biết của tác giả. Những lời đầu tiên của ông là "Tôi đã dành hai năm cố gắng để làm cho Rails làm điều gì đó không có nghĩa là để làm ...". Phần còn lại của bài viết có thể được thay thế bằng "... vì vậy tôi là một thằng ngốc vì đã lãng phí 2 năm." – meagar

+1

"Bạn có thể muốn đọc điều này" - đặc biệt là "Hiệu suất tổng thể: PHP hiếm khi là nút cổ chai (trang HTML)" http://talks.php.net/show/drupal08/7 :-) – igouy

+2

Đã bỏ phiếu "Không, không phải nền tảng độc lập "trả lời, bởi vì điều đó chủ yếu phụ thuộc vào ** cách ** bạn tích hợp với máy chủ HTTP. – magnus

17

Câu hỏi của bạn rộng.

  • PHP có thể được thực hiện nhanh chóng và khả năng mở rộng (Flickr, Facebook và các trang web khác chạy PHP)

  • Hơi tương tự trong mục đích là webframeworks như Ruby on Rails, Django, Lift, ... (các thể quy mô, quá, xem ví dụ Twitter)

  • Một giới thiệu ngắn về CGI trong C: http://www.cs.tut.fi/~jkorpela/forms/cgic.html

+0

Chỉnh sửa rất nhỏ: * ứng dụng * xây dựng trong PHP có thể được thực hiện nhanh chóng, điều này đúng - nhưng ngôn ngữ bản thân nó, theo bản chất, không thể được thực hiện "nhanh", hoặc ít nhất không theo nghĩa là các ngôn ngữ hệ thống (C, C++, Go, v.v.) rất nhanh. Ngôn ngữ tự dựa vào thời gian chạy được viết bằng ngôn ngữ hệ thống và/hoặc dịch vụ bên ngoài (DBMS, v.v.) cũng được (viết cho hầu hết các phần) được viết bằng ngôn ngữ hệ thống, cho bất kỳ thứ gì có hiệu suất quan trọng. –

6

PHP cắm trực tiếp vào Apache.

C thì không. Để kết nối C với Apache, bạn sẽ phải sử dụng một số thực thi CGI an toàn/nhanh chóng thay vì CGI ngoài giá.

C - làm ngôn ngữ - là rất nhiều công việc để xây dựng trang web.

Xem xét khung web bằng Python.

Nhìn vào Ruby on Rails.

+2

Bạn không thực sự trả lời câu hỏi và một số thông tin không chính xác. C * không * tích hợp trực tiếp với Apache thông qua các mô-đun Apache. Ví dụ: mod_rewrite, mod_env, v.v. * C * cũng * tích hợp ** gián tiếp ** cho CGI/FastCGI/SCGI/etc như bạn đã đề cập. – magnus

8

Perl (CGI)

Python

RoR (Ruby On Rails)

ASP (Không phải là lựa chọn tốt nhất)

Khá chắc chắn nếu bạn sẽ mã hóa một trang web trong C sẽ được mã hóa máy chủ web của riêng bạn vì vậy tôi sẽ tránh xa điều đó.

RoR sẽ là một lựa chọn tốt. Nhưng nó chỉ phụ thuộc vào sở thích cá nhân của bạn. Tôi có xu hướng gắn bó với php kể từ khi tôi biết làm thế nào để làm khá nhiều tất cả mọi thứ trong PHP.

1

Nếu vấn đề của bạn là một trang web hoặc ứng dụng web mà dường như quá chậm, chuyển đổi ngôn ngữ có lẽ không đáng để nỗ lực. Có nhiều cách hiệu quả hơn để tăng tốc mọi thứ. Một trong số đó sẽ là bộ nhớ đệm mã để tránh chi phí cho việc biên dịch các tập lệnh PHP mới của bạn trên mọi yêu cầu trang. Xem ví dụ http://en.wikipedia.org/wiki/PHP_accelerator. Cá nhân tôi đã sử dụng XCache để có hiệu quả tuyệt vời.

Có nhiều lý do khác khiến trang web hoạt động chậm hơn so với chúng có thể, nhiều lý do hoàn toàn không liên quan đến ngôn ngữ cơ bản. YSlow (http://developer.yahoo.com/yslow/) là một công cụ không thể thiếu để tìm nút cổ chai của bạn. Để đưa ra một ví dụ, việc kết hợp nhiều tệp CSS hoặc JS được bao gồm từ một trang HTML vào một tệp duy nhất, mỗi tệp có thể cải thiện đáng kể thời gian phản hồi.

Vì vậy, dòng dưới cùng: Trong hầu hết các trường hợp, ngôn ngữ cơ bản không phải là thủ phạm. Có nói tất cả điều đó, vâng, có những ngôn ngữ nhanh hơn. Xem các câu trả lời khác trên :)

+1

Có. Kiểm tra HipHop PHP, biên dịch PHP thành mã C để tăng 50% hiệu suất. – Rolf

9

Nếu bạn thích javascript bạn có thể sử dụng nó trên server-side với Node.js

3

gì về mã hóa các trang web trong C? Làm thế nào mà làm việc ra? Nền tảng đó có độc lập và hoạt động trên mỗi máy chủ không?

Viết mã độc lập nền tảng trong C là hoàn toàn có thể. (PHP chính nó được viết bằng C, và có vô số các chương trình đa nền tảng và các thư viện được viết bằng C, như PostgreSQL và MySQL, Boost và Poco C++).

Nền tảng viết độc lập ứng dụng web, mặt khác, chủ yếu phụ thuộc vào cách bạn tích hợp với máy chủ HTTP. Ví dụ, nếu bạn viết một ứng dụng C mà tích hợp trực tiếp với máy chủ HTTP qua một mô-đun được biên dịch (cho Apache hoặc IIS), bạn sẽ kết thúc bằng mã di động nhỏ hơn - ví dụ, viết mô-đun IIS trong C hoặc Delphi (mà tôi đã thấy thực hiện và eBay ban đầu đã làm) có nghĩa là bạn không chỉ bị khóa đối với Windows mà còn bị khóa đối với IIS trên Windows. Tình huống tương tự khi viết các mô-đun Apache trong C.

Nhưng nếu bạn viết một ứng dụng web trong C, tích hợp thông qua một tiêu chuẩn chung với máy chủ HTTP, thì có, bạn có thể có mã khá di động (mặc dù mã phải được biên dịch trên mỗi nền tảng). Ví dụ, bạn có thể sử dụng CGI để giao tiếp với máy chủ HTTP bằng cách sử dụng các biến môi trường, hoặc bạn có thể sử dụng các tiêu chuẩn liên quan, FastCGI và SCGI. Một lần nữa, tôi đã thấy điều này được thực hiện trong các ứng dụng thương mại, thực tế (cả hiệu ứng tốt lẫn hiệu ứng xấu).

Cuộc tranh luận về các ứng dụng web gốc (ví dụ: được viết bằng C, C++ và tương tự) so với các ứng dụng web thông dịch (PHP, Perl, v.v.) thường tập trung vào ba lĩnh vực.

  • Hiệu suất mã. Trừ khi nó được viết bởi một con khỉ đã chết não, người đã không có được công việc để viết cookie tài sản, mã C sẽ luôn luôn tốt hơn PHP. Tuy nhiên, các nút cổ chai trong ứng dụng của bạn có thể không phải là với tốc độ và mức tiêu thụ bộ nhớ của mã, mà là với các thói quen đầu vào/đầu ra.
  • Năng suất của nhà phát triển. Trừ khi bạn sử dụng một khung làm việc tốt (và một phần câu hỏi của bạn là về các bộ tính năng của các ngôn ngữ khác), bạn sẽ viết rất nhiều mã bảng, lặp đi lặp lại. Ví dụ: giải mã các URL được mã hóa theo phần trăm, phân tích cú pháp dữ liệu HTTP POST, v.v. Có các khung công tác tồn tại trong C và C++ (xem CppCMS).
  • Tính di động, như bạn đã đề cập. Nếu bạn đã chết khi viết một ứng dụng web trong C, tôi sẽ gắn bó với CGI hoặc SCGI.