Dừng bộ nhớ đệm cho PHP 5.5.3 trong MAMP


123

Đã cài đặt MAMP trên Macbook mới với PHP 5.5.3.

Tải lại và làm mới không làm gì cả. Vẫn không có gì. Google xung quanh trong vài phút cố gắng tìm hiểu những gì sai, quay lại và làm mới. Nó hoạt động. Cái quái gì thế

Tôi đã truy cập vào php.ini và vô hiệu hóa tất cả OPcache mới và đặt thời gian bộ đệm mặc định thành 0. Đã thêm các tiêu đề vào tài liệu để buộc không lưu vào bộ đệm. Vẫn vấn đề tương tự. Cái quái gì đang xảy ra ở đây?

Tab mạng đang hiển thị yêu cầu HTTP 200, do đó, bất kỳ HTML mới nào trong index.phptệp đều hoạt động tốt, nhưng PHP mới cần được máy chủ kết xuất sẽ bị trì hoãn và không được hiển thị cho đến khi một số thời gian định trước trôi qua mà tôi không biết thay đổi. Chuyện gì đang xảy ra vậy?

Tôi cũng đã kiểm tra điều này trong Safari vì vậy đây chắc chắn là một điều máy chủ giữ cho tệp không hiển thị.

Mặc dù vậy, thực tế thú vị, nếu tôi đi vào MAMP và thay đổi phiên bản PHP thành phiên bản cũ (PHP 5.2 hoặc một cái gì đó) thì nó sẽ hiển thị bình thường, không có "vấn đề bộ đệm". Chuyển sang PHP 5.5 và nó bị treo. Trong các tùy chọn bộ đệm tùy chọn MAMP cho 5.5 thậm chí không tồn tại và tự động bị tắt.


4
Tôi biết rằng đây không phải là giải pháp cho vấn đề của bạn, nhưng cá nhân tôi không phải là một fan hâm mộ lớn của MAMP, vì, đặc biệt là khi cài đặt ngăn xếp tùy chỉnh rất dễ dàng - Đây là một hướng dẫn khá nhanh để cài đặt ngăn xếp bằng homebrew: github .com / josegonzalez / homebrew-php
mewm

@mewm Tôi không nhận ra nó có thể dễ dàng như vậy. Chúc mừng! Đã sử dụng điều này để đi với nginx chỉ trong một vài lần nhấn phím. learnaholic.me/2012/10/10/ trên
willdanceforfun 22/12/13

Câu trả lời:


207

Vô hiệu hóa OPCache

MAMP hiện bật OPCache theo mặc định, bạn có thể vô hiệu hóa nó bằng cách chỉnh sửa tệp php.ini của mình. Hãy chắc chắn rằng bạn chỉnh sửa php.ini chính xác.

Tôi đã chạy vào cùng một vấn đề bản thân mình. MAMP với phiên bản PHP 5.5.3 chạy OPcache theo mặc định, nhưng bạn không thể tắt nó trong GUI như bạn có thể với phiên bản PHP cũ hơn 5.2.17. Bạn phải nhận xét thủ công tất cả các dòng OPcache ở cuối tệp php.ini (MAMP / bin / php / [phiên bản] /conf/php.ini) và đảm bảo dừng và khởi động máy chủ để thực hiện các thay đổi hiệu ứng.

Tôi đã cập nhật URI, các thay đổi có thể được phản ánh bằng cách thay đổi / conf / trong thư mục php, nhưng có vẻ như MAMP sẽ bỏ qua những thay đổi này sau khi khởi động lại .


4
Tôi đã có cùng một vấn đề và khắc phục nó bằng cách bình luận các dòng opcache. Thật khó hiểu khi bạn phải vào tệp php.ini để thay đổi điều này. Nó thực sự khá sai lệch, vì có vẻ như bạn có tất cả các tùy chọn bộ đệm được đưa ra trong hộp thả xuống MAMP-> Preferences.
JaredH

17
Tôi đang tự hỏi phần nào trong cơ thể người tạo MAMP của họ đang sử dụng để suy nghĩ trong khi thêm "tính năng tuyệt vời" này.
Sergii

Tôi nghĩ rằng tôi đã có lỗi với cài đặt ModX của mình, nhưng không, câu trả lời của bạn dường như đã sửa nó. Cảm ơn. Ngoài ra, tôi cũng trở lại phiên bản cũ hơn. Bây giờ nó chạy tốt hơn nhiều.
vr_do

67
Lưu ý rằng php.initệp bạn muốn chỉnh sửa là trong / bin, không phải trong / conf. Con đường đầy đủ của tôi là /Applications/MAMP/bin/php/php5.5.3/conf/php.ini.
Husky

Tôi đã gửi báo cáo lỗi, hy vọng họ sẽ tắt nó theo mặc định trong phiên bản tương lai: bug.mamp.info/view.php?id=4296
Husky

38

Tôi đã thêm opcache_reset (); trong PHP chính của tôi để dừng bộ đệm này.

Loại bỏ nó khỏi php5.5.3/conf/php.inikhông làm gì cho tôi.

Biên tập

Hóa ra cũng có a /Applications/MAMP/bin/php/php5.5.3/conf/php.ini. Nó hoạt động nếu tôi nhận xét nó ra khỏi đó.


1
Nhận xét OPcache trong thư mục / bin làm việc cho tôi! Cảm ơn vì điều đó!
daveaspinall

Nhận xét OPcache trong php.ini /Applications/MAMP/bin/php/php5.5.3/conf/php.inikhông có gì, nhưng thêm vào opcache_reset();để index.phplàm việc.
Đã được đăng ký vào

26

1) trong
/Appluggest/MAMP/bin/php/php5.5.3/conf/php.ini 2) đặt opcache.revalidate_freq = 0
3) khởi động lại MAMP


2
Điều này dường như làm việc. Tôi thích thực hiện giải pháp này tốt hơn là bình luận tất cả. Nhưng có một sự khác biệt?
Ketri

10

Mất quá lâu để nhận ra đó là một vấn đề MAMP! Tại sao OPcache được bật theo mặc định-- và yêu cầu sửa đổi php.ini để tắt - trong một ứng dụng được cho là được sử dụng để kiểm tra các trang web? Dù sao, tôi đọc qua toàn bộ chủ đề này và thử các giải pháp khác nhau.

Dưới đây là những lưu ý của tôi về cách mỗi giải pháp hoạt động và cân nhắc để lựa chọn một giải pháp.

Mỗi giải pháp hoạt động trên chính nó; không cần dự phòng.


Giải pháp mã trang web

opcache_reset ();

<?php opcache_reset(); ?>
  • Phải được thêm vào mã trang web.
  • Buộc tất cả các tập lệnh được tải lại.
  • Hoạt động mà không cần khởi động lại máy chủ MAMP.

Giải pháp cấu hình máy chủ

Quan trọng: Sử dụng php.initệp trong /Applications/MAMP/bin/php/php5.5.3/conf/php.inivà không trong /Applications/MAMP/conf/php5.5.3/php.ini. Điều chỉnh phù hợp nếu bạn đang sử dụng một phiên bản PHP khác.

cho phép = 0

[OPcache]
zend_extension="/Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212/opcache.so"
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
enable=0
  • Phải được bổ sung dưới [OPcache]trong php.ini.
  • Vô hiệu hóa OPcache.
  • Yêu cầu khởi động lại máy chủ MAMP.

opcache.revalidate_freq = 0

[OPcache]
zend_extension="/Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212/opcache.so"
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=0
opcache.fast_shutdown=1
opcache.enable_cli=1
  • Sửa đổi opcache.revalidate_freqdưới [OPcache]trong php.ini.
  • Làm cho OPcache kiểm tra cập nhật cứ sau 0 giây thay vì cứ sau 60 giây.
  • Yêu cầu khởi động lại máy chủ MAMP.

Bình luận [OPcache]

;[OPcache]
;zend_extension="/Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212/opcache.so"
;opcache.memory_consumption=128
;opcache.interned_strings_buffer=8
;opcache.max_accelerated_files=4000
;opcache.revalidate_freq=60
;opcache.fast_shutdown=1
;opcache.enable_cli=1
  • Nhận xét toàn bộ [OPcache]phần trong php.ini.
  • Loại bỏ OPcache khỏi máy chủ PHP.
  • Yêu cầu khởi động lại máy chủ MAMP.

Cân nhắc

Chọn giải pháp mã trang web nếu:

  • Bạn chỉ cần buộc làm mới tập lệnh cho một dự án cụ thể
  • Bạn không muốn khởi động lại máy chủ MAMP
  • Bạn không muốn chỉnh sửa php.ini

Chọn giải pháp cấu hình máy chủ nếu:

  • Bạn muốn tắt bộ nhớ đệm theo mặc định thay vì phải làm điều đó trong mọi dự án
  • Bạn cảm thấy thoải mái với việc chỉnh sửa php.ini

Cá nhân tôi thích enable=0vì đây là giải pháp đơn giản nhất đối với tôi và tôi cần tắt bộ nhớ đệm theo mặc định.


Người giới thiệu


4

MAMP 3.0.7.2 cho OS X

Có vẻ như đây cuối cùng là một tùy chọn GUI. MAMP 3.0.7.2 for Mac OS X.


Điều này không vô hiệu hóa OPCache rõ ràng. Của tôi vẫn hoạt động ngay cả khi thiết lập này "tắt".
auco

2

Thật đau đớn khi dành khoảng 1 giờ để cố gắng tìm ra nó có thể là gì.

Tôi chỉ thêm phần này vào cuối mã và khởi động lại MAMP.

  opcache.revalidate_freq=0
  opcache_reset();

2

Chỉnh sửa "/Appluggest/MAMP/conf/php5.5.3/php.ini" và tìm kiếm [OPcache] và thêm mã này theo nó trực tiếp:

opcache.enable=0

Điều này sẽ vô hiệu hóa opcache khi sử dụng PHP trong máy chủ MAMP.


Làm việc cho máy chủ Ubuntu của tôi. Cảm ơn.
Sinan Eldem

2

Người đàn ông tôi vui mừng tôi tìm thấy chủ đề này! Tôi đang nhổ tóc ra! Tôi mới nâng cấp MAMP ngày hôm qua và không nhận thấy vấn đề bộ đệm này cho đến hôm nay khi đang làm việc trên một dự án. Nghĩ rằng tôi đã mất trí. Tôi vừa thay đổi "/Appluggest/MAMP/conf/php5.5.3/php.ini" ở dưới cùng của tệp opcache.enable = 0


1

Điều này cũng là hiện tại trong phiên bản Windows của MAMP.

C: \ MAMP \ conf \ php5.6.3 \ php.ini

Nó được liệt kê ở dưới cùng của tập tin.

Vấn đề khác tôi tìm thấy là trên QNAP NAS TS-431. Bộ nhớ đệm này cũng được bật và nếu bạn đang làm việc với các tệp thay đổi động hoặc cố gắng phát triển trên đó, bạn sẽ bị xé tóc. Theo các ý kiến ​​khác, chỉ cần bình luận ra. Cài đặt được đặt tại:

Bảng điều khiển / Ứng dụng / Máy chủ Web / Bảo trì PHP.ini.

Một lần nữa, bạn sẽ tìm thấy các cài đặt ở dưới cùng của tệp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.