Tôi muốn kích hoạt tải trước opcache ( RFC ) trên các máy chủ sản xuất của mình bằng PHP 7.4. Tôi đang sử dụng Symfony , nhưng điều này áp dụng cho tất cả PHP.
Tôi muốn kích hoạt tải trước opcache ( RFC ) trên các máy chủ sản xuất của mình bằng PHP 7.4. Tôi đang sử dụng Symfony , nhưng điều này áp dụng cho tất cả PHP.
Câu trả lời:
Trước hết bạn nên thêm:
opcache.preload=/path/to/project/preload.php
cho bạn php.ini
Sau đó, trong tập lệnh PHP của bạn, bạn nên chuyển vào opcache_compile_file($file);
từng tệp bạn muốn tải trước.
Theo bài viết trên blog này dường như là tầm thường. Rõ ràng Symfony kể từ 4.4 tạo ra một kịch bản tải trước phải được đặt trong php.ini
:
opcache.preload=/path/to/project/var/cache/prod/App_KernelProdContainer.preload.php
Tôi đã thực hiện một số thử nghiệm trong môi trường Docker cục bộ của mình và đây là cách nó diễn ra:
PHP 7.3 không có OPcache (hiện tại)
Requests per second: 8.75 [#/sec] (mean)
Time per request: 114.402 [ms] (mean)
PHP 7.4 không có OPcache
Requests per second: 11.44 [#/sec] (mean)
Time per request: 87.417 [ms] (mean)
PHP 7.4 với OPcache, không tải trước (Apache + modphp)
Requests per second: 30.25 [#/sec] (mean)
Time per request: 33.053 [ms]
PHP 7.4 với OPcache, không tải trước (nginx + php fpm)
Requests per second: 40.00 [#/sec] (mean)
Thật không may, tôi không thể kích hoạt tải trước :( Tôi gặp phải các lỗi sau (trong cả Apache + Mod và Nginx + FPM):
double free or corruption (!prev)
child pid 17 exit signal Aborted (6), possible coredump (…)
Tính năng này trông giống như một WIP mặc dù. Tôi sẽ xác nhận lại câu trả lời này khi tôi có thể sử dụng thứ tải trước này. Nhìn chung, tôi khá ấn tượng, hiệu suất + 30% chỉ bằng cách nâng cấp từ PHP 7.3
lên 7.4
.