Tôi đang tìm một giải pháp tôi cần xóa các tệp nhật ký, nhưng có thể có khả năng chúng đang được truy cập tại thời điểm thực hiện cuộc gọi xóa. Bằng cách được truy cập, tôi có nghĩa là một quá trình là đọc hoặc ghi vào tập tin. Trong những trường hợp như vậy, tôi cần phải bỏ qua tệp thay vì xóa nó. Ngoài ra máy chủ của tôi là Linux và PHP đang chạy trên Apache.Xóa tập tin nếu hiện tại không được truy cập
Những gì tôi đang tìm kiếm là một cái gì đó tương tự như (in pseudo-code
):
<?php
$path = "path_to_log_file";
$log_file = "app.log";
if(!being_accessed($log_file))
{
unlink($path.$log_file);
}
?>
Bây giờ câu hỏi của tôi là làm thế nào có thể tôi xác định being_accessed
? Tôi biết có thể không có một chức năng ngôn ngữ làm điều này trực tiếp trong PHP. Tôi đang suy nghĩ về việc sử dụng kết hợp các phần như last_access_time
(có thể?) Và flock
(nhưng điều này chỉ hữu ích trong các điều kiện mà tệp được ứng dụng truy cập flock
truy cập)
Mọi đề xuất/thông tin chi tiết chào mừng ...
cách bạn xác định tệp "đang truy cập"? –
Có thể có một quá trình hoặc đọc nó, hoặc viết nó .. –
không quan trọng trên linux, các tệp sẽ không thực sự bị xóa cho đến khi tất cả các tệp con trỏ đến nó sẽ bị đóng. – SirDarius