it-swarm-vi.com

Nên sử dụng bộ đệm nào PHP (opcode) và tại sao?

Tôi liên tục nghe về một số bộ đệm PHP (opcode) như - APC, XCache, Memcache, eAccelerator, v.v.

Nhưng tôi không bao giờ tìm ra cách chọn một. Ngoài lợi ích về hiệu năng, mà một hệ thống lưu trữ được cho là sẽ cung cấp, những yếu tố khác sẽ là một điểm đáng quan tâm.

Giống như tại sao bạn sẽ nói hệ thống X cache tốt hơn Y? Tôi ít lo lắng về hiệu suất tương đối. Sự khác biệt nhỏ giữa bất kỳ hai hệ thống quan trọng ít hơn.

Nếu một câu trả lời chung cho câu hỏi của tôi là không thể, đây là vài gợi ý. Tôi sử dụng VPS chuyên dụng với MediHRple (có quyền truy cập root). RAM là 512 MB (vật lý) + 400 MB (trao đổi) Tôi lo ngại về WordPress và anh em họ của nó WordPress-MU và BuddyPress. 90% mã của chúng tôi/các trang web rơi vào WordPress gia đình.

Cảm ơn trước sự giúp đỡ.

44
rahul286

Các sản phẩm bạn liệt kê phục vụ các mục đích khác nhau.

Bộ đệm OPCode

Có rất nhiều PHP Máy gia tốc (OPCaches) như đã thấy trên này danh sách Wikipedia . Như thường thấy với các sản phẩm nguồn mở, chúng đều khá giống nhau. XCache là lighttp = PHP và là lựa chọn mặc định khi bạn đang chạy HTTPd đó. Nó cũng hoạt động tốt với Apache, tuy nhiên APC dường như hơi "chơi tốt với người khác" về mặt xã hội, được hỗ trợ chính thức là một phần của PHP và được phát hành từng bước với bản phân phối chính thức PHP.

Tôi đã từ bỏ việc sử dụng eAccelerator do sự phát triển chậm chạp của nó và tụt lại so với các bản phát hành của PHP và trạng thái may mắn chính thức mà APC cung cấp với hiệu suất tương tự.

Những sản phẩm này thường được thả vào; không có mã thay đổi tăng hiệu suất ngay lập tức. Với các cơ sở mã lớn (Drupal, Wordpress), hiệu suất có thể lên tới tốt hơn gấp 3 lần trong khi giảm thời gian phản hồi và sử dụng bộ nhớ.

Bộ nhớ đệm dữ liệu

Memcache là một sản phẩm hơi khác - bạn có thể nghĩ về nó như một hệ thống giá trị khóa nhẹ có thể được được chia tỷ lệ cho nhiều máy chủ . Phần mềm phải được tăng cường để hỗ trợ Memcache và nó giải quyết một số vấn đề tốt hơn những phần mềm khác. Nếu bạn có một danh sách các giá trị chứng khoán theo thời gian thực trên trang web của mình, bạn có thể sử dụng Memcache để giữ một danh sách cư trú của giá trị hiện tại được hiển thị trên trang web của bạn. Bạn có thể sử dụng nó để lưu trữ dữ liệu phiên để sử dụng lại ngắn hạn. Bạn sẽ không sử dụng nó cho những thứ khác như bộ nhớ cache toàn trang hoặc thay thế cho MySQL.

Ngoài ra còn có Wordpress addons như WP-Super-Cache có thể cải thiện đáng kể hiệu suất của Wordpress (nguyên vẹn, WP-Super-Cache có thể cạnh tranh với các trang web dựa trên HTML tĩnh trong nhiều trường hợp)

Tóm lại - Tôi rất muốn giới thiệu APC nếu bạn muốn "đặt nó và quên nó, sản phẩm được hỗ trợ tốt".

33
SirStan

Một câu trả lời tốt đã được đăng trên stackoverflow để trả lời câu hỏi của bạn độc đáo.

https://stackoverflow.com/questions/28716/which-php-opcode-cacher-should-i-use-to-improve-performance

8
The Pixel Developer

Chỉ cần lưu ý rằng mọi thứ đã thay đổi một chút và có vẻ như APC sẽ không được bao gồm trong PHP 6 lõi.

APC có tốc độ phát triển chậm và có vẻ như nó sẽ không bao giờ PHP 5.5. Vì thế, có vẻ như những kẻ từ PHP sẽ thiết lập bộ đệm opcode Zend OPCache tiện ích mở rộng dưới dạng PHP Tiện ích mở rộng CORE. Bạn quan tâm đọc thêm tại đây http://wiki.php.net/rfc/optimizerplus .

Lưu ý quan trọng: Zend OPCache không có bộ đệm dữ liệu người dùng như APC, vì vậy nếu bạn cần bộ đệm dữ liệu người dùng, bạn có thể sử dụng nó cùng với Memcache.

6
Nemke

APC sẽ được tích hợp vào PHP6, vì vậy đó là một lựa chọn hợp lý. Tôi sử dụng nó, và tăng hiệu suất là tuyệt vời. Nếu bạn cần lưu trữ một cái gì đó không phải là opcodes (tức là kết quả truy vấn db), bạn cũng có thể sử dụng APC cho điều đó, nhưng không thể chia sẻ bộ đệm APC giữa nhiều máy chủ. Nếu bạn chỉ cần lưu trữ trên một máy chủ, APC là tuyệt vời. Nếu bạn cần mở rộng ra nhiều máy chủ và muốn chia sẻ bộ đệm giữa chúng, memcached là người đàn ông của bạn.

Mặc dù vậy, một điều tôi sẽ làm là tạo một lớp bao bọc cho bất kỳ bộ đệm (không phải mã opcode) nào bạn làm. Bằng cách đó bạn có thể trao đổi bộ nhớ đệm mà không thay đổi mã của mình.

6
lo_fye

Nếu đang chạy PHP ít nhất 5,50, OpCache là lựa chọn tốt nhất của bạn (thư viện gốc PHP/PECL). Nó sẽ được biên dịch trước nếu cài đặt từ nhị phân.

http://php.net/manual/en/book.opcache.php

Nếu chạy PHP trước 5.5, APC (bộ đệm OpCode riêng của PHP/PECL) sẽ là lựa chọn đơn giản nhất, mặc dù nó được coi là không rõ ràng và đã chết:

http://php.net/manual/en/book.apc.php

Sử dụng chức năng OpCache riêng của PHP sẽ giúp bạn tránh những rắc rối khi duy trì thư viện của bên thứ 3.

3
recurse

Memcache lưu trữ cặp khóa/giá trị, không phải opcodes. Bạn có thể sử dụng nó kết hợp với một trong các bộ đệm opcode.

0
user10699