Sự khác biệt giữa curl và file_get_contents trong php là gì?
Show
Sự khác biệt giữa curl và file_get_contents Có một số cách trong PHP để gửi yêu cầu HTTP hoặc nhận phản hồi HTTP. Các phương pháp được sử dụng phổ biến nhất là
Tiểu sửCác lập trình viên PHP có thể bị nhầm lẫn bởi tất cả các loại thư viện HTTP khác nhau. Sự khác biệt giữa chúng là gì? . Vì vậy, tôi muốn chia sẻ kinh nghiệm và hiểu biết của mình về mã hóa HTTP trong bài viết này So sánh trên HTTP libsChúng tôi sẽ so sánh ba phương pháp này trong một ví dụ thực tế - mô phỏng việc gửi phiếu yêu cầu hỗ trợ trên cubebackup. com/hỗ trợ. php
hàm file_get_contents ban đầu được thiết kế để đọc nội dung của tệp thành một chuỗi. Tuy nhiên, nó cũng hỗ trợ giao thức HTTP để gửi các yêu cầu GET/POST. Rất thuận tiện và đơn giản khi sử dụng phương thức này cho các thao tác HTTP đơn giản. Tuy nhiên, do tính đơn giản của nó, nó không phù hợp với các giao tiếp HTTP phức tạp, chẳng hạn như chuyển liên tục điểm dừng, báo cáo tiến trình tải lên/tải xuống, chức năng gọi lại, v.v. PHP // using file_get_contents to submit a support ticket $post_array = array ( "email" => "[email protected]", "problem" => "error happened on backing up Google Drive files...bla bla bla" ); $post_string = http_build_query($post_array); $opts = array( 'http' => array( 'method' => "POST", 'header' => "Content-Type: application/x-www-form-urlencoded", 'content'=> $post_string ) ); $context = stream_context_create($opts); $result = file_get_contents('http://www.cubebackup.com/ticketsubmit.php', false, $context); if ($result === FALSE) { // ... } else{ // ... }
CURL/libcurl có lẽ là thư viện HTTP được sử dụng rộng rãi nhất trong thế giới lập trình. Ban đầu nó được mã hóa bằng ngôn ngữ C, sau đó được chuyển sang nhiều ngôn ngữ khác. Tôi đã sử dụng rất nhiều libcurl trong C++ trong một thời gian khá lâu và nó không bao giờ làm tôi thất vọng. Bất kể về chức năng, hiệu suất hay phong cách mã hóa, CURL luôn có thể đáp ứng mong đợi của bạn. Đặc biệt, CURL có thể xử lý các thao tác HTTP phức tạp một cách tinh tế, chẳng hạn như các yêu cầu HTTP không đồng bộ, báo cáo tiến độ, v.v. Vấn đề duy nhất của curl/libcurl mà tôi có thể nghĩ đến là nó cần một chút thời gian, ít nhất là vài giờ, để làm quen với các chức năng và phong cách viết mã của nó. PHP // using CURL lib to do the same job $post_array = array ( "email" => "[email protected]", "problem" => "error happened on backing up Google Drive files...bla bla bla" ); $post_data = http_build_query($post_array); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://www.cubebackup.com/ticketsubmit.php'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); $res = curl_exec($ch); curl_close($ch); if ($res === FALSE) { // .. } else { // ... }
Trên thực tế, tiện ích mở rộng PECL_HTTP cũng dựa trên libcurl. Nó chỉ là một trình bao bọc của libcurl sử dụng tiện ích mở rộng PECL. Nó đã cố gắng đơn giản hóa một số thao tác trong curl/libcurl và thân thiện hơn với các lập trình viên. Trong hầu hết các trường hợp, so với CURL, việc sử dụng tiện ích mở rộng PECL trên các yêu cầu/phản hồi HTTP sẽ dễ dàng hơn. Tuy nhiên, có một vấn đề lớn trong phần mở rộng PECL_HTTP - nó không được bao gồm trong hầu hết các môi trường PHP hoặc Linux. Điều đó có nghĩa là bạn phải tải xuống và cài đặt tiện ích mở rộng này theo cách thủ công, sau đó biên dịch lại mã nguồn PHP. Thông thường, điều này là cồng kềnh và khiến hầu hết người dùng của nó khiếp sợ. Một vấn đề khác tôi đã tìm thấy là PECL_HTTP phiên bản 2. 0 không tương thích với phiên bản 1. 0 và phong cách lập trình của nó đã thay đổi hoàn toàn. Rõ ràng, nó vẫn chưa đủ trưởng thành để sử dụng trong sản xuất PHP //PECL_HTTP implemention $problemDesc="error happend on backing up Google Drive files.. bla bla bla"; $post_string = "[email protected]&problem=".$problemDesc; $res = http_post_data('http://www.cubebackup.com/ticketsubmit.php', $post_string); if ($res === FALSE) { // .. } else { //... } Phần kết luậnCURL vẫn là thư viện HTTP tốt nhất trong PHP và nó có thể được sử dụng để mã hóa bất kỳ chương trình nào liên quan đến HTTP file_get_content() có thể là lựa chọn đầu tiên cho các yêu cầu HTTP POST/GET đơn giản nhưng không phù hợp với mã hóa HTTP phức tạp Tiện ích mở rộng PECL_HTTP trông đơn giản và thanh lịch hơn, nhưng nó cũng không hoàn thiện và thiếu tài liệu. Hơn nữa, nó không khả dụng trong một số môi trường Giấy phépBài viết này, cùng với bất kỳ mã nguồn và tệp liên quan nào, được cấp phép theo Giấy phép Mở Dự án Mã (CPOL) file_get_contents có sử dụng cURL không?hàm file_get_contents(). Hàm PHP này được sử dụng để truy xuất nội dung của tệp. Nội dung có thể được lưu trữ dưới dạng biến chuỗi.
. PHP Làm cách nào để sử dụng cURL thay vì file_get_contents?hàm file_get_contents_curl($url) { $ch = curl_init(); . //Google. com');
Sự khác biệt giữa hàm file() và file_get_contents() là gì?file — Đọc toàn bộ nội dung tệp thành một mảng các dòng. file_get_contents — Đọc toàn bộ nội dung tệp thành một chuỗi .
Việc sử dụng file_get_contents trong PHP là gì?file_get_contents() đọc tệp thành một chuỗi . Hàm này là cách ưa thích để đọc nội dung của tệp thành một chuỗi. Nó sẽ sử dụng các kỹ thuật ánh xạ bộ nhớ, nếu điều này được máy chủ hỗ trợ, để nâng cao hiệu suất. |