Rumah pembangunan bahagian belakang tutorial php 执行、获取远程代码返回:file_get_contents 超时处理的问题详解_PHP

执行、获取远程代码返回:file_get_contents 超时处理的问题详解_PHP

Jun 01, 2016 pm 12:05 PM
file_get_contents Pemprosesan tamat masa

天气终于晴了,但问题来了。在实现两个站点间用户数据同步,当使用php函数 file_get_contents抓取执行远程页面时,如果连接超时将会输出一个Fatal Error或相当的慢,结果导致下面的代码不能运行。先了解一下PHP file_get_contents() 函数
定义和用法
file_get_contents() 函数把整个文件读入一个字符串中。
和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。
file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。
语法
file_get_contents(path,include_path,context,start,max_length)参数 描述
path 必需。规定要读取的文件。
include_path 可选。如果也想在 include_path 中搜寻文件的话,可以将该参数设为 "1"。
context 可选。规定文件句柄的环境。
context 是一套可以修改流的行为的选项。若使用 null,则忽略。
start 可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 新加的。
max_length 可选。规定读取的字节数。该参数是 PHP 5.1 新加的。
说明
对 context 的支持是 PHP 5.0.0 添加的。
针对超时或页面过慢,一般可采取两个解决方案:

一. 利用file_get_contents()第三个参数
复制代码 代码如下:
$url = "http://zhoz.com/zhoz.php";     
$ctx = stream_context_create(array(     
‘http' => array(‘timeout' => 10)     
    )     
    );     
$result = @file_get_contents($url, 0, $ctx);     
if($result){     
        var_dump($result);     
    }else{     
echo " Buffer is empty";     
    }     
?>  

此方法1,我经测试在本地反映良好,但如果在外网测试(环境:中国→美国服务器间)基本都是超时的情况。
测试了TimeOut基本没有用了,建议以下方式

二. 使用curl扩展库
复制代码 代码如下:
$url = "http://zhoz.com/zhoz.php";     
try {     
echo date(‘Y-m-d h:i:s');     
echo "";     
//$buffer = file_get_contents($url);   
$buffer = zhoz_get_contents($url);     
echo date(‘Y-m-d h:i:s');     
if(emptyempty($buffer)) {     
echo " Buffer is empty";     
        } else {     
echo " Buffer is not empty";     
        }     
    } catch(Exception $e) {     
echo "error ";     
    }     
function zhoz_get_contents($url, $second = 5) {     
$ch = curl_init();     
        curl_setopt($ch,CURLOPT_URL,$url);     
        curl_setopt($ch,CURLOPT_HEADER,0);     
        curl_setopt($ch,CURLOPT_TIMEOUT,$second);     
        curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);     
$content = curl_exec($ch);     
        curl_close($ch);     
return $content;     
    }     
?>

综述,根据系统环境来选择到底应用哪种方法:
复制代码 代码如下:
function vita_get_url_content($url) {  
if(function_exists(‘file_get_contents')) {  
$file_contents = file_get_contents($url);  
} else {  
$ch = curl_init();  
$timeout = 5;  
curl_setopt ($ch, CURLOPT_URL, $url);  
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);  
$file_contents = curl_exec($ch);  
curl_close($ch);  
}  
return $file_contents;  
}  
?> 

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menyelesaikan Amaran PHP: file_get_contents(): Nama fail tidak boleh kosong Cara menyelesaikan Amaran PHP: file_get_contents(): Nama fail tidak boleh kosong Aug 18, 2023 pm 07:30 PM

Bagaimana untuk menyelesaikan PHPWarning: file_get_contents(): Filenamecannotbeempty Dalam proses pembangunan PHP, kita sering menghadapi mesej ralat ini: PHPWarning: file_get_contents(): Filenamecannotbeempty. Ralat ini biasanya berlaku apabila menggunakan fungsi file_get_contents

如何解决Amaran PHP: file_get_contents(): gagal membuka strim: Permintaan HTTP gagal 如何解决Amaran PHP: file_get_contents(): gagal membuka strim: Permintaan HTTP gagal Aug 18, 2023 pm 11:34 PM

Bagaimana untuk menyelesaikan PHPWarning:file_get_contents():failedtoopenstream:HTTPrequestfailed Semasa pembangunan PHP, kami sering menghadapi situasi di mana permintaan HTTP dimulakan ke pelayan jauh melalui fungsi file_get_contents. Walau bagaimanapun, kadangkala kami menghadapi mesej ralat biasa: PHPWarning: file_get_c

Fungsi file_get_contents() PHP: Cara membaca kandungan daripada fail Fungsi file_get_contents() PHP: Cara membaca kandungan daripada fail Nov 04, 2023 pm 01:43 PM

Fungsi file_get_contents() PHP: Cara membaca kandungan daripada fail, contoh kod khusus Dalam PHP, file_get_contents() ialah fungsi yang sangat berguna yang membolehkan kita membaca kandungan daripada fail. Sama ada membaca fail teks atau membaca kandungan dari URL jauh, fungsi ini boleh menyelesaikan tugas dengan mudah. Sintaks Sintaks asas fungsi ini adalah seperti berikut: stringfile_get_contents(string$f

Penjelasan terperinci tentang fungsi caching fail PHP: kaedah pemprosesan caching fail file_get_contents, file_put_contents, nyahpaut dan fungsi lain Penjelasan terperinci tentang fungsi caching fail PHP: kaedah pemprosesan caching fail file_get_contents, file_put_contents, nyahpaut dan fungsi lain Nov 18, 2023 am 09:37 AM

Penjelasan terperinci tentang fungsi caching fail PHP: kaedah pemprosesan caching fail file_get_contents, file_put_contents, nyahpaut dan fungsi lain, yang memerlukan contoh kod khusus Dalam pembangunan web, kita sering perlu membaca data daripada fail atau menulis data ke fail. Selain itu, dalam beberapa kes, kita perlu menyimpan cache kandungan fail untuk mengelakkan operasi membaca dan menulis fail yang kerap, sekali gus meningkatkan prestasi. Dalam PHP, terdapat beberapa fungsi yang biasa digunakan yang boleh membantu kami melaksanakan caching fail, termasuk

Pengenalan fungsi PHP—file_get_contents(): Baca kandungan URL ke dalam rentetan Pengenalan fungsi PHP—file_get_contents(): Baca kandungan URL ke dalam rentetan Jul 24, 2023 pm 02:32 PM

Pengenalan fungsi PHP—file_get_contents(): Baca kandungan URL ke dalam rentetan Dalam pembangunan web, selalunya perlu untuk mendapatkan data daripada pelayan jauh atau membaca fail jauh. PHP menyediakan fungsi yang sangat berkuasa file_get_contents(), yang boleh membaca kandungan URL dan menyimpannya pada rentetan dengan mudah. Artikel ini akan memperkenalkan penggunaan fungsi file_get_contents() dan memberikan beberapa contoh kod untuk membantu pembaca dengan lebih baik

Pengendalian ralat di Golang: Bagaimana untuk mengendalikan ralat tamat masa? Pengendalian ralat di Golang: Bagaimana untuk mengendalikan ralat tamat masa? Aug 07, 2023 pm 01:17 PM

Pengendalian ralat di Golang: Bagaimana untuk mengendalikan ralat tamat masa? Pengenalan: Apabila menulis program yang menggunakan permintaan rangkaian atau melaksanakan operasi yang memakan masa, kita sering menghadapi tamat masa. Ralat tamat masa ini mungkin disebabkan oleh isu sambungan rangkaian, memproses volum data yang besar atau kegagalan perkhidmatan luaran. Di Golang, kami boleh menggunakan beberapa teknik untuk mengendalikan ralat tamat masa dan memastikan keteguhan dan kebolehpercayaan program. Artikel ini akan memperkenalkan beberapa kaedah pengendalian ralat tamat masa biasa dan memberikan contoh kod yang sepadan. 1. Gunakan pakej masa Pergi

Sambungan PHP dan WebDriver: Cara Mengendalikan Masa Tamat dan Kegagalan Muatan Halaman Web Sambungan PHP dan WebDriver: Cara Mengendalikan Masa Tamat dan Kegagalan Muatan Halaman Web Jul 08, 2023 pm 12:21 PM

Sambungan PHP dan WebDriver: Cara Mengendalikan Tamat Masa Pemuatan Halaman Web dan Kegagalan Pengenalan: Isu rangkaian adalah salah satu cabaran biasa apabila menggunakan alat ujian automasi web. Apabila kami menggunakan bahasa PHP digabungkan dengan sambungan WebDriver untuk ujian automatik, kami sering menghadapi tamat masa pemuatan halaman web atau kegagalan. Dalam artikel ini, saya akan menerangkan cara menggunakan PHP dan sambungan WebDriver untuk menangani masalah ini, dan memberikan beberapa contoh kod. 1. Tetapkan tamat masa memuatkan halaman web Dalam ujian automatik, kita perlu

Cara membaca kandungan fail menggunakan fungsi file_get_contents dalam PHP Cara membaca kandungan fail menggunakan fungsi file_get_contents dalam PHP Jun 26, 2023 pm 12:01 PM

Dalam PHP, kita sering perlu membaca data daripada fail. Dalam kes ini, kita boleh menggunakan fungsi file_get_contents. Fungsi ini hanya boleh membaca segala-galanya daripada fail dan mengembalikannya sebagai rentetan. Ini sangat berguna dalam banyak senario, seperti membaca fail konfigurasi, membaca fail log, dsb. Dalam artikel ini, kami akan menerangkan cara membaca kandungan fail menggunakan fungsi file_get_contents dalam PHP. Langkah 1: Buka fail menggunakan fail

See all articles