Tôi gặp sự cố khi chúng tôi chạy bản nâng cấp cho ứng dụng web của mình.clearstatcache + include_path + sessions
Sau khi tập lệnh nâng cấp hoàn tất và truy cập ứng dụng web qua trình duyệt, chúng tôi nhận được lỗi không tìm thấy tệp trên require_once() vì chúng tôi đã chuyển một số tệp và PHP vẫn có cấu trúc thư mục cũ được lưu trong bộ nhớ cache.
Nếu chúng tôi có 120 giây mặc định cho realpath_cache_ttl hết hạn, thì mọi thứ sẽ tự giải quyết, nhưng điều này không thể chấp nhận được vì lý do hiển nhiên.
Vì vậy, tôi đã thử sử dụng clearstatcache với thành công hạn chế. Tôi tạo ra một file riêng biệt (clearstatcache.php) mà chỉ gọi chức năng này (đây là một tập tin một dòng), và đặt một cuộc gọi đến nó trong cài đặt kịch bản của chúng tôi qua curl:
<?php
clearstatcache(true);
này dường như không làm việc Tuy nhiên, nếu tôi gọi tập tin này thông qua trình duyệt nó ngay lập tức bắt đầu hoạt động.
Tôi đang chạy phiên bản PHP 5.3
tôi bắt đầu nhìn vào sự khác biệt theo yêu cầu tiêu đề giữa trình duyệt và curl của tôi, và điều duy nhất tôi có thể thấy rằng có thể có vấn đề là cookie PHPSESSID.
Vì vậy, câu hỏi của tôi là, hiện tại vấn đề PHPSESSID (tôi không nghĩ rằng nó nên). Tôi đang làm gì sai với kịch bản curl của tôi? Tôi đang sử dụng
curl -L http://localhost/clearstatcache.php
EDIT: Sau khi nghiên cứu sâu hơn, tôi đã quyết định điều này có lẽ có cái gì để làm với nhiều quy trình apache chạy. clearstatcache sẽ chỉ xóa bộ nhớ cache của quá trình apache hiện tại - khi trình duyệt đang thực hiện yêu cầu một quá trình apache khác phục vụ yêu cầu và quá trình này vẫn có bộ nhớ cache cũ.
AFAIK 'realpath_cache_ttl' và' realpath_cache_size' chỉ ảnh hưởng đến đường dẫn thực, đường dẫn đến tệp tồn tại. Ít nhất điều này được chứng minh bằng thực tế là tôi có các giá trị mặc định là 120 và 16K trên tất cả các dự án của tôi và tôi chưa bao giờ gặp phải vấn đề như vậy. Bạn có sử dụng bất kỳ bộ nhớ cache opcode nào không? – zerkms
bạn chính xác, bộ nhớ cache là cho mỗi quá trình. – goat