2015-12-14 21 views
6

Tôi đã thiết lập trang web của mình trên một máy chủ lưu trữ mới (đám mây ảo), tuy nhiên tôi đang xem opcache và scripts không được sử dụng để nói a minutes or so bị xóa khỏi bộ nhớ cache.Opcache xóa quá nhanh

Vậy có cách nào để ngăn chặn không? hoặc nó là một hành vi bình thường?

Cảm ơn rất nhiều.

+0

các thiết lập opcache trong php.ini của bạn là gì? – Clay

+0

Giá trị của "" opcache.max_accelerated_files "là gì xảy ra nếu bạn đặt" opcache.validate_timestamps = 0 "? – Clay

+0

opcache.max_accelerated_files = 2000 –

Trả lời

0

Có vẻ như bạn cần xác định validate_timestamps=0 bằng php.ini. Cẩn thận với điều này mặc dù - nếu bạn tải lên bất kỳ thay đổi nào đối với tệp PHP của bạn, bạn sẽ cần phải khởi động lại Apache (nếu bạn sử dụng mod_php5) hoặc PHP5-FPM hoặc xóa opcache theo cách thủ công.

Để biết chi tiết về cách xóa opcache theo cách thủ công, về cơ bản bạn phải tạo một tệp PHP với opcache_reset() và chạy nó, nhưng điều này phải ở trong cùng SAPI như các tệp khác của bạn - tức là chạy bởi PHP5-FPM những gì đang phục vụ phần còn lại của các tệp của bạn. http://ihaveabackup.net/2013/10/19/invalidating-the-opcache-in-php-5-5/

2

Có cấu hình cho thực tế. opcache.revalidate_freq=2, giá trị mặc định là 2 giây, opcache sẽ cố gắng kiểm tra dấu thời gian sau mỗi 2 giây và nếu các tệp được thay đổi, nó sẽ xác thực lại. Bạn có thể thay đổi giá trị để phù hợp với nhu cầu của mình hoặc bạn chỉ có thể tắt dấu thời gian bằng cách sử dụng conf này opcache.validate_timestamps=0, nhưng trong trường hợp này mỗi khi bạn triển khai mã vào sản xuất, bạn phải khởi động lại php-fpm (nếu bạn đang sử dụng php-fpm) và web server

opcache.revalidate_freq=2 hoặc bất kỳ giá trị số nguyên

opcache.validate_timestamps=1 hoặc opcache.validate_timestamps=0

+0

Bởi sử dụng 'opcache.validate_timestamps' thành' 0', tùy chọn 'opcache.revalidate_freq' sẽ bị bỏ qua. –