php get_headers 判断回来是否是200 碰到不存在的脚本执行超时
php get_headers 判断返回是否是200 碰到不存在的脚本执行超时
不存在的IP网址,会一直等待响应,直到函数超时,导致页面迟迟无法显示。
failed to open stream: HTTP request failed!
Fatal error: Maximum execution time of 30 seconds exceeded
设置了 ini_set('max_execution_time', 10);还一样
要不不用这个函数自己写socket了,用这个函数的curl_init,麻烦,各位有啥别好的方法没
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] )
最后一个参数 $timeout设为5,即可设置最大连接时间5秒,过期函数返回,程序并不会退出
------解决方案--------------------
思路是楼上的,get_headers 只能说php这个函数不完善,咱只有用socket自己写了
由于不能给自己分,我用另外的账号登陆了,以下是完整代码,也给别人做做贡献了
- PHP code
function DoGet($url) { $url2 = parse_url($url); if(!isset($url2['path']))$url2['path']=''; $url2["path"] = ($url2["path"] == "" ? "/" : $url2["path"]); $url2["port"] = (isset($url2["port"])?$url2["port"]:80); $host_ip = @gethostbyname($url2["host"]); $fsock_timeout =2; //2 second if(!($fsock = fsockopen($host_ip, $url2["port"], $errno, $errstr, $fsock_timeout))) { // echo 'fsockopen fail'; return false; } $request = $url2["path"] .(isset($url2["query"]) ? "?".$url2["query"] : ""); $in = "GET " . $request . " HTTP/1.0\r\n"; $in .= "Accept: */*\r\n"; $in .= "User-Agent: Payb-Agent\r\n"; $in .= "Host: " . $url2["host"] . "\r\n"; $in .= "Connection: Close\r\n\r\n"; stream_set_timeout( $fsock , $fsock_timeout ) ; if(!@fwrite($fsock, $in, strlen($in))){ //echo 'fwrite fail'; fclose($fsock); return false; } $status = stream_get_meta_data( $fsock ) ; //发送数据超时 if($status['timed_out'] ) { // echo "Write time out" ; fclose( $fsock ); return false; } $out = null; while($buff = @fgets($fsock, 2048)) { $out .= $buff; //只读取头部信息 if(false!==strpos($out, "\r\n\r\n"))break; } $status = stream_get_meta_data( $fsock ) ; //读取数据超时 if( $status['timed_out'] ) { // echo "Read time out" ; fclose( $fsock ); return false; } fclose($fsock); $pos = strpos($out, "\r\n\r\n"); $head = substr($out, 0, $pos); //http head return $head; } $rs= DoGet("http://www.ba05afasdfsiddf08usfa.com"); if(!$rs)echo 'fail'; else echo $rs; <div class="clear"> </div>

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)

Introduction à la fonction PHP — get_headers() : Présentation de l'obtention des informations d'en-tête de réponse de l'URL : Dans le développement PHP, nous avons souvent besoin d'obtenir les informations d'en-tête de réponse de la page Web ou de la ressource distante. La fonction PHP get_headers() peut facilement obtenir les informations d'en-tête de réponse de l'URL cible et les renvoyer sous la forme d'un tableau. Cet article présentera l'utilisation de la fonction get_headers() et fournira quelques exemples de code associés. Utilisation de la fonction get_headers() : get_header

La raison de l'erreur est NameResolutionError(self.host,self,e)frome, qui est un type d'exception dans la bibliothèque urllib3. La raison de cette erreur est que la résolution DNS a échoué, c'est-à-dire le nom d'hôte ou l'adresse IP qui était. La tentative de résolution n'a pas pu être trouvée. Cela peut être dû au fait que l'adresse URL saisie est incorrecte ou que le serveur DNS est temporairement indisponible. Comment résoudre cette erreur Il peut y avoir plusieurs façons de résoudre cette erreur : Vérifiez si l'adresse URL saisie est correcte et assurez-vous qu'elle est accessible Assurez-vous que le serveur DNS est disponible, vous pouvez essayer d'utiliser la commande "ping" dans la ligne de commande pour tester si le serveur DNS est disponible Essayez d'accéder au site Web en utilisant l'adresse IP au lieu du nom d'hôte si vous êtes derrière un proxy

keepalive_timeouthttp a un mode keepalive, qui indique au serveur Web de maintenir la connexion TCP ouverte après le traitement d'une requête. S'il reçoit d'autres requêtes du client, le serveur utilisera cette connexion non fermée sans établir une autre connexion. httpkeep-alive, chaque requête sur la page Web est http (images, css, etc.), et pour ouvrir une requête http, vous devez d'abord établir une connexion TCP si une page doit ouvrir et fermer une connexion TCP pour chaque requête. , il sera transformé en ressource. Le gaspillage de keepalive_timeout est que lorsqu'une requête http est terminée, sa connexion TCP restera.

De nos jours, de nombreux utilisateurs Windows qui aiment les jeux ont accédé au client Steam et peuvent rechercher, télécharger et jouer à n'importe quel bon jeu. Cependant, de nombreux profils d'utilisateurs peuvent porter exactement le même nom, ce qui rend difficile la recherche d'un profil ou même la liaison d'un profil Steam à d'autres comptes tiers ou la participation à des forums Steam pour partager du contenu. Le profil se voit attribuer un identifiant unique à 17 chiffres, qui reste le même et ne peut être modifié à aucun moment par l'utilisateur, contrairement au nom d'utilisateur ou à l'URL personnalisée. Quoi qu'il en soit, certains utilisateurs ne connaissent pas leur Steamid, et il est important de le savoir. Si vous ne savez pas comment retrouver le Steamid de votre compte, pas de panique. Dans cet article

De nombreux utilisateurs rencontreront un écran bleu après la mise à niveau du système win11, tel que : écran bleu clockwatchdogtimeout, alors comment résoudre ce problème ? Les utilisateurs peuvent mettre à jour le pilote ou vérifier les problèmes de surchauffe, etc. Laissez ce site présenter soigneusement aux utilisateurs la solution à l'écran bleu clockwatchdogtimeout win11. Solution à l'écran bleu clockwatchdogtimeout win11 1. Mettez à jour le pilote : La mise à jour des pilotes du processeur et de la carte mère peut résoudre le problème. Vous pouvez télécharger les derniers pilotes en visitant le site Web du fabricant. 2. Recherchez les problèmes de surchauffe : la surchauffe peut également être l'une des causes de cette erreur.

Séquence des lignes de connexion SPDIFOUT sur la carte mère. Récemment, j'ai rencontré un problème concernant la séquence de câblage des fils. J'ai vérifié en ligne. Certaines informations indiquent que 1, 2 et 4 correspondent à la sortie, au +5 V et à la masse tandis que d'autres informations indiquent que 1, 2 et 4 correspondent à la sortie, à la masse et au +5 V ; La meilleure façon est de consulter le manuel de votre carte mère. Si vous ne trouvez pas le manuel, vous pouvez utiliser un multimètre pour le mesurer. Trouvez d’abord la terre, puis vous pourrez déterminer l’ordre du reste du câblage. Comment connecter le câblage VDG de la carte mère Lors de la connexion du câblage VDG de la carte mère, vous devez brancher une extrémité du câble VGA dans l'interface VGA du moniteur et l'autre extrémité dans l'interface VGA de la carte graphique de l'ordinateur. Attention à ne pas le brancher sur le port VGA de la carte mère. Une fois connecté, vous pouvez

Dans le développement d'applications Vue, utiliser vue-resource pour effectuer des requêtes HTTP est une opération courante. Bien que vue-resource fournisse de nombreuses fonctions pratiques, nous rencontrons parfois des messages d'erreur tels que "Erreur : timeoutofxxxmsexceeded". Cette erreur est généralement provoquée par un délai d'attente de la demande. Alors, dans ce cas, comment devrions-nous résoudre ce problème ? 1. Augmentez le délai d'expiration de la demande. Tout d'abord, nous pouvons augmenter le délai d'expiration de la demande.

Que dois-je faire si « Erreur : timeoutofxxxmsexceeded » se produit lors de l'utilisation d'axios dans une application Vue ? Avec le développement rapide d'Internet, la technologie front-end est constamment mise à jour et itérée. En tant qu'excellent framework front-end, Vue a été bien accueillie par tout le monde ces dernières années. Dans les applications Vue, nous devons souvent utiliser axios pour effectuer des requêtes réseau, mais parfois l'erreur « Erreur : timeoutofxxxmsexceeded » se produit.
