2008-08-16 36 views
16

Có ai có kinh nghiệm làm việc với các máy gia tốc PHP như MMCache hoặc Zend Accelerator? Tôi muốn biết liệu việc sử dụng một trong hai cách này có giúp PHP so sánh được với nhanh hơn công nghệ web hay không. Ngoài ra, có thương mại giảm giá cho việc sử dụng này?Biên dịch PHP?

+2

Bạn nên thay đổi tiêu đề thành "Accelerated PHP". Đây không phải là về trình biên dịch ở tất cả, mặc dù có rất nhiều câu hỏi về việc biên dịch PHP. –

Trả lời

13

Lưu ý rằng Zend Optimizer và MMCache (hoặc các ứng dụng tương tự) là những thứ hoàn toàn khác nhau. Trong khi Zend Optimizer cố gắng tối ưu hóa chương trình opcode MMCache sẽ lưu các tập lệnh trong bộ nhớ và sử dụng lại mã đã biên dịch sẵn.

Tôi đã làm một số tiêu chuẩn một số thời gian trước đây và bạn có thể tìm thấy results trong blog của tôi (bằng tiếng Đức).Kết quả cơ bản:

Chỉ một mình Trình tối ưu hóa Zend không giúp gì cả. Thực ra kịch bản của tôi chậm hơn không có trình tối ưu hóa.

Khi nói đến bộ nhớ đệm: * nhanh nhất: eAccelerator * XCache * APC

Và: Bạn DO muốn cài đặt một bộ nhớ cache opcode!

Ví dụ: alt text http://blogs.interdose.com/dominik/wp-content/uploads/2008/04/opcode_wordpress.png

Đây là thời gian phải mất để gọi trang chủ wordpress 10.000 lần.

Chỉnh sửa: BTW, eAccelerator chứa trình tối ưu hóa.

2

Tùy thuộc vào số lượng mã PHP của bạn thực sự được thực thi và thời gian thực hiện chúng có thể là một chiến thắng thực sự lớn. Nó chắc chắn không phải là sẽ làm tổn thương, nhưng đạt được bạn sẽ thấy rất nhiều phụ thuộc vào nơi thời gian của bạn hiện đang chi tiêu.

btw mmcache đã được đưa vào một dự án khác ngay bây giờ, tôi quên tên nhưng Google sẽ cho bạn biết.

3

Cả hai đều thú vị và sẽ cung cấp tăng tốc độ vì chúng biên dịch mã nguồn thành biểu diễn nhị phân mà sau đó được thực thi bởi công cụ PHP.

Bất kỳ trang web lớn nào đang chạy với PHP (ví dụ Facebook) đang chạy một số loại hệ thống bộ nhớ cache opcode như MMCache.

Vấn đề là chúng không dễ cài đặt tùy thuộc vào hệ thống của bạn.

0

Bạn đã kiểm tra Phalanger chưa? Nó biên dịch mã PHP thành .NET. Dưới đây là some benchmarks cho thấy rằng nó có thể cải thiện đáng kể hiệu suất.

+0

Điểm chuẩn khác: http://www.php-compiler.net/benchmarks – Eldros

0

Tôi đã sử dụng Zend Accelerator một chút trong ngày (2004-ish). Nó chắc chắn đã mang lại một số chiến thắng đáng kể về mã nó có thể làm việc, nhưng tiếc là hệ thống tôi đang sử dụng được thiết kế để tải mã động và sau đó đánh giá nó, mà Zend Accelerator không thể làm gì nhiều vào thời điểm đó (và tôi ' d đoán vẫn không thể).

Ở phía bên dưới, chúng tôi chắc chắn đã thấy một số vấn đề về bộ nhớ đệm (nơi mã sẽ thay đổi, nhưng phiên bản được biên dịch đồng bộ hóa với thay đổi vì một lý do này hoặc lý do khác). Tôi hình dung rằng những vấn đề này có thể đã được giải quyết ngay bây giờ.

Dù sao, tôi không có bất kỳ số so sánh khó, và chắc chắn không viết cùng một hệ thống trong các môi trường khác nhau để so sánh, nhưng đối với phần lớn các hệ thống, PHP sẽ không giết bạn hiệu suất khôn ngoan.

2

Tôi sử dụng APC trên các máy chủ sản xuất của mình và nó hoạt động khá tốt ngoài hộp. Biên dịch nó và thêm nó vào PHP và không có nhiều điều chỉnh trái để làm cho nó. Tôi kiểm tra nó mỗi lần trong một thời gian chỉ để xem xét số liệu thống kê nhưng vì tôi sử dụng MVC rất nhiều tất cả các tập tin chính (bộ định tuyến, bộ điều khiển, vv) hiếm khi thay đổi trên cơ sở hàng ngày để mã vẫn được biên dịch và chạy khá hiệu quả .

1

hiện tại chúng tôi sử dụng apc, miễn phí và chỉ là một plug and play đơn giản trên các máy chủ trực tiếp của chúng tôi. Cung cấp một sự gia tăng hiệu suất rất lớn cho trang web của chúng tôi, đặc biệt là khi kích thước dự án tăng lên. Tôi cũng có apc.stat bị vô hiệu hóa vì vậy nó không kiểm tra nếu mã đã được cập nhật, vì vậy bất cứ khi nào chúng ta cần cập nhật mã trên trang web trực tiếp, chúng tôi khởi động lại apache.

1

Tôi sử dụng APC và có thể chứng thực rằng nó có thể giảm đáng kể CPU và tải I/O trên máy chủ ứng dụng nếu bạn duy trì tốc độ truy cập bộ nhớ cache cao. Nó không chỉ giúp bạn tiết kiệm từ việc phải biên dịch, nó có thể giúp bạn tiết kiệm từ việc phải đọc các tập tin php từ đĩa. (tức là các bytecode được phục vụ trực tiếp từ bộ nhớ chính, vì vậy nó siêu nhanh) Nó làm giảm tốc độ để hiển thị một trang duy nhất và tăng các yêu cầu trên mỗi giây mà máy chủ của bạn có thể xử lý.

Nếu bạn sử dụng RedHat hoặc CentOS, cài đặt APC là siêu đơn giản:

yum install php-devel httpd-devel php-pear 
pecl install apc 
echo "extension=apc.so" > /etc/php.d/apc.ini 
# if you're using SELinux: 
chcon "system_u:object_r:textrel_shlib_t" /usr/lib/php/modules/apc.so 
/etc/init.d/httpd restart 

Bạn hỏi về nhược điểm. Nhược điểm duy nhất là nó đòi hỏi một số bộ nhớ. Mặc định trên APC là 30MB, nhưng nó có thể được điều chỉnh, và chi phí của một ít bộ nhớ hơn là trả tiền cho chính nó với tốc độ tăng và tốc độ đáp ứng.

1

Kiểm tra của BlaM bao gồm tất cả các cuộc gọi DB được thực hiện bởi WordPress. Khi bạn thực hiện các cuộc gọi DB ít hơn, bạn sẽ thấy hiệu suất của các bộ đệm mã opcode thậm chí còn ấn tượng hơn.

+0

đã đồng ý. Tôi cũng có một số thử nghiệm khác. Nhưng tôi quyết định chọn một ví dụ "thế giới thực";) – BlaM