Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Tài nguyên (Resource) trong PHP

Định nghĩa và cách sử dụng

Trong PHP, Resource là một kiểu dữ liệu đặc biệt tham chiếu đến bất kỳ tài nguyên bên ngoài nào. Biến resource đóng vai trò như một tham chiếu đến nguồn dữ liệu ngoại部 như stream (luồng), file, cơ sở dữ liệu, v.v. PHP sử dụng các hàm liên quan để tạo ra các resource này. Ví dụ: hàm fopen() mở một file trên đĩa và tham chiếu của nó được lưu trữ trong một biến resource.

Zend Engine của PHP sử dụng hệ thống đếm tham chiếu (reference counting). Do đó, một resource với số lượng tham chiếu bằng 0 sẽ bị hủy tự động bởi bộ thu gom rác (garbage collector). Vì vậy, bộ nhớ được sử dụng bởi kiểu dữ liệu resource không cần được giải phóng thủ công.

Các loại resource khác nhau có thể được xử lý trong script PHP nhờ các hàm tương ứng. Bảng dưới đây liệt kê một số loại resource phổ biến:

Tên loại Resource Được tạo bởi Được hủy bởi Định nghĩa
bzip2 bzopen() bzclose() File Bzip2
curl curl_init() curl_close() Phiên Curl
ftp ftp_connect() ftp_close() Luồng FTP
mssql link mssql_connect() mssql_close() Liên kết đến cơ sở dữ liệu Microsoft SQL Server
mysql link mysql_connect() mysql_close() Liên kết đến cơ sở dữ liệu MySQL
mysql result mysql_db_query() mysql_free_result() Kết quả MySQL
oci8 connection oci_connect() oci_close() Kết nối đến Oracle Database
ODBC link odbc_connect() odbc_close() Liên kết đến cơ sở dữ liệu ODBC
pdf document pdf_new() pdf_close() Tài liệu PDF
stream opendir() closedir() Handle thư mục
stream fopen(), tmpfile() fclose() Handle file
socket socket_create(), fsockopen() fclose() Handle socket
xml xml_parser_create() xml_parser_free() Bộ phân tích XML
zlib gzopen() gzclose() File nén gz
zlib.deflate deflate_init() Tự động Ngữ cảnh deflate tăng dần
zlib.inflate inflate_init() Tự động Ngữ cảnh inflate tăng dần

Trong bối cảnh này, PHP cung cấp hàm get_resource_type() để trả về kiểu resource của một biến.

Cú pháp

get_resource_type ( resource $handle ) : string

Trong đó $handle là biến resource cần xác định kiểu. Hàm này trả về một chuỗi tương ứng với kiểu resource.

Ví dụ

Kiểm tra kiểu resource của file

<?php
$fp = fopen("test.txt", "w");
var_dump($fp);
?>

Kết quả

resource(5) of type (stream)

Sử dụng get_resource_type()

<?php
$fp = fopen("test.txt", "w");
echo get_resource_type($fp) . "\n";
?>

Kết quả

stream