Kiểm tra PHP nếu tệp được đính kèm
Nhiều lần bạn sẽ cần di chuyển các tệp xung quanh hoặc lưu trữ một số dữ liệu bên trong chúng trong PHP. Trong cả hai trường hợp, việc biết trước tệp có tồn tại hay không có thể giúp chúng tôi tránh một số hành vi không mong muốn Show PHP đi kèm với nhiều chức năng để xử lý các loại truy vấn khác nhau liên quan đến tệp. Trong hướng dẫn này, tôi sẽ cung cấp cho bạn tổng quan ngắn gọn về tất cả các chức năng này để bạn có thể chọn một chức năng hoạt động tốt nhất trong trường hợp của mình Tầm quan trọng của việc kiểm tra xem tệp có tồn tại khôngCó rất nhiều tình huống trong đó việc kiểm tra xem tệp có tồn tại hay không trước khi thực hiện bất kỳ điều gì khác có thể quan trọng. Giả sử trang web của bạn cho phép người dùng tải lên các tệp hình ảnh trên máy chủ của bạn để họ có thể truy cập sau này. Công bằng mà nói, luôn có khả năng xảy ra xung đột tên tệp nếu nhiều người dùng đang sử dụng dịch vụ của bạn để tải nhiều tệp lên thường xuyên Trong những trường hợp như vậy, điều quan trọng là phải kiểm tra xem đã có tệp khác ở vị trí bạn muốn lưu tệp được tải lên gần đây của người dùng chưa. Sau đó, bạn sẽ có tùy chọn thực hiện một số bước như đổi tên tệp thành tên khác hoặc cho người dùng biết rằng tệp tải lên của họ sẽ ghi đè lên tệp hiện có Hãy xem xét một tình huống khác mà bạn phải thêm dữ liệu vào một tệp trong PHP. Nếu tệp bạn đã tạo để ghi tất cả dữ liệu của mình bị xóa vì lý do nào đó, các chức năng như
11 sẽ chỉ tạo một tệp mới với tên được chỉ định và lưu trữ dữ liệu của bạn bên trong tệp mới tạo. Điều này có thể được mong muốn trong một số trường hợp, nhưng không phải lúc nào cũng vậy. Vì vậy, thật hợp lý khi kiểm tra xem tệp có tồn tại trước hay không nếu bạn đã mong đợi nó ở đó trước khi bạn bắt đầu ghi dữ liệu của mìnhKiểm tra xem tệp có tồn tại trong PHP khôngCó ba chức năng khác nhau mà bạn có thể sử dụng để kiểm tra xem một tệp có tồn tại trong PHP hay không Chức năng đầu tiên là
12. Hàm này chấp nhận một tham số duy nhất là đường dẫn chứa tệp của bạn. Hãy nhớ rằng nó sẽ trả về true cho cả tệp và thư mục hiện có. Điều này có thể hoặc có thể không đủ cho nhu cầu của bạnBạn có thể cân nhắc sử dụng hàm
13 nếu muốn chắc chắn rằng đường dẫn mà bạn đã chỉ định trỏ tới tệp chứ không phải thư mục. Tương tự, bạn có thể sử dụng hàm
14 để kiểm tra xem đường dẫn bạn đã chỉ định có tồn tại không và liệu nó có trỏ đến một thư mục không_______ 4____0 2 3 $name = "squares.txt"; 4
0
1
2
3
0
1
2
3
4
5
6
7
8
9
321 22 23 24 25 26
328_______69 30 đầu ra 1______72____6 34 3 36 Trong ví dụ trên, tôi cố ý đặt tên cho một trong các thư mục là ô vuông. zip để cho thấy rằng điều quan trọng là bạn phải tự kiểm tra thay vì cho rằng tên tệp được cung cấp thực sự là tên tệp hoặc thư mục Điều quan trọng cần nhớ là cả
13 và
14 sẽ trả về
17 ngay cả đối với các đường dẫn thực sự tồn tại khi thư mục mẹ không có quyền phù hợpKiểm tra xem tệp có tồn tại và có thể đọc hoặc ghi được khôngCó thể sử dụng thêm hai hàm có tên là
18 và
19 để lấy một số thông tin bổ sung về một tệp, bên cạnh việc kiểm tra xem nó có tồn tại hay khôngĐúng như tên gọi, hàm
18 sẽ kiểm tra hai thứ. thứ nhất, tệp hoặc thư mục thực sự tồn tại và thứ hai, tệp có thể đọc được. Tương tự, hàm
19 cũng kiểm tra hai điều, rằng tệp hoặc thư mục tồn tại và có thể ghi được1______0 2 3 $name = "squares.txt"; 4
1$name = "squares.txt";4
2$name = "squares.txt";6
0
3
2
441
543
7
3
921 30 đầu ra 1____100 2
02Tôi khuyên bạn nên cẩn thận khi diễn giải giá trị trả về của hai hàm này. Ví dụ: bản năng đầu tiên của chúng tôi khi
18 trả về false là nghĩ rằng tệp chúng tôi đã truy vấn không thể đọc được. Tuy nhiên hàm cũng trả về false nếu file không tồn tại. Điều quan trọng là luôn ghi nhớ khía cạnh này của các chức năng nàyCoi chừng kết quả được lưu trong bộ nhớ cacheGiá trị trả về mà bạn nhận được từ lệnh gọi đến tất cả năm hàm này—cụ thể là,
12,
13,
14,
18 và
27—được lưu vào bộ đệm ẩn. Điều này có nghĩa là các lệnh gọi lặp lại tới một hàm, chẳng hạn như
13, có thể hiển thị cho bạn kết quả cũPHP lưu trữ kết quả của các chức năng này để cải thiện hiệu suất. Điều này đảm bảo rằng nhiều cuộc gọi để truy vấn cùng một tệp sẽ hoạt động nhanh hơn. Tuy nhiên, giá trị trả về của chúng sẽ giữ nguyên ngay cả khi tệp thay đổi trong quá trình thực thi tập lệnh Kết quả chỉ được lưu vào bộ đệm cho các tệp đã tồn tại. Điều này có nghĩa là việc gọi một hàm
13 sẽ tiếp tục trả về
17 cho các tệp không tồn tại nhưng sẽ bắt đầu trả về
31 ngay khi tệp được tạo. Mặt khác, hàm sẽ tiếp tục trả về
31 cho tệp đã tồn tại trong lần gọi đầu tiên, ngay cả sau khi tệp đã bị xóa1
2 3 $name = "squares.txt"; 4
1
6
2
8
0
3
2
4
5
18
7
20
921
622
824
326 28
3029
32
6
34
8
36
37
38
39
00
3
02
0330 Nếu bạn chạy đoạn mã trên cho một tệp thực sự tồn tại và sau đó xóa nó theo cách thủ công trong khi tập lệnh chờ, việc gọi
13 sẽ vẫn trả về
31. Tuy nhiên, bạn có thể nhận được kết quả chính xác bằng cách gọi
35 trước khi truy vấn lại sự tồn tại của tệpđầu ra _______4__ 34 2 34 3
10Một điều khác cần nhớ là lệnh gọi tới
36 sẽ tự động xóa bộ nhớ cache, do đó, bạn sẽ nhận được kết quả mới cho các lệnh gọi tới hàm như
13 sau nàySuy nghĩ cuối cùngChúng tôi bắt đầu hướng dẫn này bằng cách tìm hiểu tầm quan trọng của việc kiểm tra sự tồn tại của tệp trong PHP. Sau đó, chúng ta đã tìm hiểu về các chức năng khác nhau mà bạn có thể sử dụng để kiểm tra xem một tệp có tồn tại trong PHP hay không. Chúng tôi cũng đã tìm hiểu về những ưu điểm và nhược điểm mà một số chức năng này có thể có. Như tôi đã đề cập ở phần cuối, PHP sẽ lưu trữ kết quả của một số lệnh gọi hàm này để cải thiện hiệu suất. Do đó, hãy đảm bảo rằng bạn xóa bộ nhớ cache trước khi thực hiện điều gì đó quan trọng với các tệp đó |