执行、获取远程代码返回:file_get_contents 超时处理的问题详解_PHP
天气终于晴了,但问题来了。在实现两个站点间用户数据同步,当使用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;
}
?>

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

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

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, 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, 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 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? 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 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

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
