Hàm file_put_contents() trong PHP.

22/07/2020 - lượt xem
Chia sẻ
 
Rate this post

Định Nghĩa.

Hàm file_put_contents() dùng để ghi dữ liệu vào một file. Hàm này tương tự nhu các hàm fopen(), fwrite() và fclose() cùng đều ghi dữ liệu tới một file. Nếu filename không tồn tại, thì file được tạo. Nếu tồn tại, file sẽ được ghi đè, trừ khi FILE_APPEND flags được thiết lập.

Cú pháp.

Cú pháp:

file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] ) : int

Trong đó.

  • $filename là đường dẫn tới file.
  • $data là nội dung của file.
  • $flag là tham số, mang một trong các giá trị sau:
    • FILE_USE_INCLUDE_PATH : hàm sẽ tìm kiếm $filename trong include directory, xem thêm include_path  để tìm hiểu.
    • FILE_APPEND : nếu file đã tồn tại, hám sẽ không ghi đè $data vào nội dung sẵn có mà sẽ nối $data vào cuối file.
    • LOCK_EX Có được một khóa độc quyền trên tệp trong khi tiến hành viết. Nói cách khác, một cuộc gọi flock () xảy ra giữa cuộc gọi fopen () và cuộc gọi fwrite (). Điều này không giống với cuộc gọi fopen () với chế độ “x”.
  • $context Một context resource hợp lệ được tạo bởi stream_context_create().

Giá trị trả về.

  • Hàm này trả về số lượng byte đã được ghi tới file, hoặc FALSE nếu thất bại.
Lưu ý: 
Hàm này có thể trả về Boolean FALSE, nhưng cũng có thể trả về giá trị không Boolean ước tính cho FALSE.
Vui lòng đọc phần trên Booleans để biết thêm thông tin. Sử dụng toán tử === để kiểm tra giá trị 
trả về của hàm này.

Errors/Exceptions.

  • Một lỗi mức E_WARNING được tạo nếu không thể tìm thấy filename, maxlength nhỏ hơn 0 hoặc nếu tìm kiếm  offset chỉ định trong luồng không thành công.

Ví dụ.

ví dụ 1 sử dụng đơn giản

code:

<?php
$file = 'people.txt';
// Mở tệp để lấy nội dung hiện có
$current = file_get_contents($file);
// Thêm nội dung mới vào file.
$current .= "John Smith\n";
// Viết thêm nội dung vào file.
file_put_contents($file, $current);
?>

Ví dụ 2 sử dụng flags.

<?php
$file = 'people.txt';
// The new person to add to the file
$person = "John Smith\n";
// Viết nội dung vào một tập tin,
//sử dụng cờ FILE_APPEND để nối nội dung vào cuối tệp
// và cờ LOCK_EX để ngăn chặn bất kỳ ai khác ghi vào tệp cùng một lúc
file_put_contents($file, $person, FILE_APPEND | LOCK_EX);
?>

Sự thay đổi qua các phiên bản.

  • PHP 5.1.0 đã thêm hỗ trợ cho LOCK_EX và khả năng truyền tài nguyên luồng cho tham số dữ liệu

Ghi chú.

  • Hàm này là kiểu binary-safe.(Nhị phân).
  • tiền boa Một URL có thể được sử dụng làm tên tệp với chức năng này nếu trình  fopen wrappers đã được bật. Xem fopen() để biết thêm chi tiết về cách chỉ định tên tệp. Xem các Supported Protocols and Wrappers để biết các liên kết đến thông tin về khả năng của các trình bao bọc khác nhau, ghi chú về cách sử dụng và thông tin về bất kỳ biến được xác định trước nào mà chúng có thể cung cấp.

Hàm liên quan.

Thông tin thêm.

  • Tập tin đặt nội dung thất bại nếu bạn cố gắng đặt một tập tin trong một thư mục không tồn tại. Điều này tạo ra thư mục.
    <?php
        function file_force_contents($dir$contents){
            $parts explode('/'$dir);
            $file array_pop($parts);
            $dir '';
            foreach($parts as $part)
                if(!is_dir($dir .= "/$part")) mkdir($dir);
            file_put_contents("$dir/$file"$contents);
        }
    ?>
  • Rõ ràng là chỉ nên sử dụng điều này nếu bạn đang viết một lần, nếu bạn đang viết nhiều lần vào cùng một tệp, bạn nên tự xử lý nó bằng fopen và fwrite, fclose khi bạn viết xong. So sánh tốc độ của file_put_contents() với các hàm tương tự, – Sử dụng file_put_contents() 1.000.000 lần.
    Thực tế 0m3.932s
    Người dùng 0m2.487s
    Hệ thống 0m1.437s
    – Sử dụng fopen() fwrite() cũng 1.000.000 Lần.
    Thực tế 0m2.265s
    Người dùng 0m1.819s
    Hệ thống 0m0.445s
  • Một phiên bản đơn giản hóa của phương thức: http://php.net/manual/ru/feft.file-put-contents.php#84180
    <?php
    function file_force_contents( $fullPath, $contents, $flags = 0 ){
        $parts = explode( '/', $fullPath );
        array_pop( $parts );
        $dir = implode( '/', $parts );
       
        if( !is_dir( $dir ) )
            mkdir( $dir, 0777, true );
       
        file_put_contents( $fullPath, $contents, $flags );
    }
    
    file_force_contents( ROOT.'/newpath/file.txt', 'message', LOCK_EX );
    ?>

Các bạn có thể xem chi tiết hơn trên php.net.

Hi vọng với bài viết này, bạn đã hiểu rõ ứng dụng của hàm file_put_contents() trong PHP. Nếu bạn thấy bài viết hay và có ý nghĩa hãy like và chia sẻ bài viết này để mọi người cùng nhau học tập nhé. Cảm ơn các bạn đã ghé thăm codetutam.com

    Liên hệ với chúng tôi

    Để lại thông tin để nhận được các bài viết khác

    Rate this post

    Xem thêm nhiều bài tin mới nhất về Kiến thức

    Xem thêm