执行、获取远程代码返回: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;
}
?>

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



Comment résoudre PHPWarning : file_get_contents() : Filenamecannotbeempty Dans le processus de développement PHP, nous rencontrons souvent ce message d'erreur : PHPWarning : file_get_contents() : Filenamecannotbeempty. Cette erreur se produit généralement lors de l'utilisation de la fonction file_get_contents

Comment résoudre PHPWarning:file_get_contents():failedtoopenstream:HTTPrequestfailed Lors du développement PHP, nous rencontrons souvent des situations où des requêtes HTTP sont initiées vers des serveurs distants via la fonction file_get_contents. Cependant, nous rencontrons parfois un message d'erreur courant : PHPWarning : file_get_c

Fonction file_get_contents() de PHP : Comment lire le contenu d'un fichier, exemple de code spécifique En PHP, file_get_contents() est une fonction très utile qui nous permet de lire le contenu d'un fichier. Qu'il s'agisse de lire un fichier texte ou de lire du contenu à partir d'une URL distante, cette fonction peut facilement accomplir la tâche. Syntaxe La syntaxe de base de cette fonction est la suivante : stringfile_get_contents(string$f

Explication détaillée des fonctions de mise en cache de fichiers PHP : méthodes de traitement de mise en cache de fichiers de file_get_contents, file_put_contents, unlink et d'autres fonctions, qui nécessitent des exemples de code spécifiques. Dans le développement Web, nous avons souvent besoin de lire des données à partir de fichiers ou d'écrire des données dans des fichiers. De plus, dans certains cas, nous devons mettre en cache le contenu des fichiers pour éviter les opérations fréquentes de lecture et d'écriture de fichiers, améliorant ainsi les performances. En PHP, il existe plusieurs fonctions couramment utilisées qui peuvent nous aider à implémenter la mise en cache des fichiers, notamment

Introduction à la fonction PHP — file_get_contents() : Lire le contenu de l'URL dans une chaîne. Dans le développement Web, il est souvent nécessaire d'obtenir des données d'un serveur distant ou de lire un fichier distant. PHP fournit une fonction très puissante file_get_contents(), qui peut facilement lire le contenu d'une URL et l'enregistrer dans une chaîne. Cet article présentera l'utilisation de la fonction file_get_contents() et donnera quelques exemples de code pour mieux aider les lecteurs.

Gestion des erreurs dans Golang : Comment gérer les erreurs de délai d'attente ? Introduction : Lors de l'écriture de programmes qui utilisent des requêtes réseau ou effectuent des opérations fastidieuses, nous rencontrons souvent des délais d'attente. Ces erreurs de délai d'attente peuvent être provoquées par des problèmes de connexion réseau, un traitement excessif des données ou des pannes de services externes. Dans Golang, nous pouvons utiliser certaines techniques pour gérer les erreurs de délai d'attente et garantir la robustesse et la fiabilité du programme. Cet article présentera quelques méthodes courantes de gestion des erreurs de délai d'attente et donnera des exemples de code correspondants. 1. Utilisez le forfait horaire Go

Extensions PHP et WebDriver : comment gérer les délais d'attente et les échecs de chargement des pages Web Introduction : Les problèmes de réseau sont l'un des défis courants lors de l'utilisation d'outils de test d'automatisation Web. Lorsque nous utilisons le langage PHP combiné à l’extension WebDriver pour des tests automatisés, nous rencontrons souvent des délais d’attente ou des échecs de chargement de pages Web. Dans cet article, je vais expliquer comment utiliser PHP et l'extension WebDriver pour gérer ces problèmes, et fournir quelques exemples de code. 1. Définissez le délai de chargement de la page Web. Lors des tests automatisés, nous devons le faire.

En PHP, nous avons souvent besoin de lire des données à partir de fichiers. Dans ce cas, nous pouvons utiliser la fonction file_get_contents. Cette fonction peut simplement lire tout ce qui se trouve dans un fichier et le renvoyer sous forme de chaîne. Ceci est très utile dans de nombreux scénarios, tels que la lecture de fichiers de configuration, la lecture de fichiers journaux, etc. Dans cet article, nous expliquerons comment lire le contenu d'un fichier à l'aide de la fonction file_get_contents en PHP. Étape 1 : Ouvrez le fichier à l'aide du fichier
