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>

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



Pengenalan fungsi PHP—get_headers(): Gambaran keseluruhan mendapatkan maklumat pengepala respons URL: Dalam pembangunan PHP, kita selalunya perlu mendapatkan maklumat pengepala respons halaman web atau sumber jauh. Fungsi PHP get_headers() boleh dengan mudah mendapatkan maklumat pengepala respons URL sasaran dan mengembalikannya dalam bentuk tatasusunan. Artikel ini akan memperkenalkan penggunaan fungsi get_headers() dan menyediakan beberapa contoh kod yang berkaitan. Penggunaan fungsi get_headers(): get_header

Sebab ralat adalah NameResolutionError(self.host,self,e)daripada, yang merupakan jenis pengecualian dalam pustaka urllib3 Sebab ralat ini adalah bahawa resolusi DNS gagal, iaitu nama hos atau alamat IP yang telah cuba diselesaikan tidak dapat ditemui. Ini mungkin disebabkan oleh alamat URL yang dimasukkan tidak betul atau pelayan DNS tidak tersedia buat sementara waktu. Bagaimana untuk menyelesaikan ralat ini Mungkin terdapat beberapa cara untuk menyelesaikan ralat ini: Semak sama ada alamat URL yang dimasukkan adalah betul dan pastikan ia boleh diakses Pastikan pelayan DNS tersedia, anda boleh cuba menggunakan arahan "ping" dalam baris arahan untuk menguji sama ada pelayan DNS tersedia Cuba akses tapak web menggunakan alamat IP dan bukannya nama hos jika di belakang proksi

keepalive_timeouthttp mempunyai mod keepalive, yang memberitahu pelayan web untuk memastikan sambungan TCP terbuka selepas memproses permintaan. Jika ia menerima permintaan lain daripada klien, pelayan akan menggunakan sambungan tidak tertutup ini tanpa membuat sambungan lain. httpkeep-alive, setiap permintaan pada halaman web ialah http (gambar, css, dll.), dan untuk membuka permintaan http, anda mesti mewujudkan sambungan tcp terlebih dahulu Jika halaman perlu membuka dan menutup sambungan tcp untuk setiap permintaan , ia akan dijadikan sumber Pembaziran keepalive_timeout ialah apabila permintaan http selesai, sambungan tcpnya akan kekal

Perbezaan: 1. Definisi yang berbeza, url ialah pencari sumber seragam, dan html ialah bahasa penanda hiperteks 2. Terdapat banyak url dalam html, tetapi hanya satu halaman html boleh wujud dalam url 3. html merujuk kepada; halaman web, dan url merujuk kepada alamat tapak web.

Pada masa kini, ramai pengguna Windows yang suka permainan telah memasuki klien Steam dan boleh mencari, memuat turun dan bermain mana-mana permainan yang bagus. Walau bagaimanapun, kebanyakan profil pengguna mungkin mempunyai nama yang sama, menjadikannya sukar untuk mencari profil atau memautkan profil Steam ke akaun pihak ketiga yang lain atau menyertai forum Steam untuk berkongsi kandungan. Profil tersebut diberikan id 17 digit yang unik, yang kekal sama dan tidak boleh ditukar oleh pengguna pada bila-bila masa, manakala nama pengguna atau URL tersuai boleh. Walau apa pun, sesetengah pengguna tidak mengetahui Steamid mereka, dan penting untuk mengetahui perkara ini. Jangan panik jika anda juga tidak tahu cara mencari Steamid akaun anda. Dalam artikel ini

Ramai pengguna akan mengalami skrin biru selepas menaik taraf sistem win11, seperti: clockwatchdogtimeout blue screen, jadi bagaimana untuk menyelesaikannya? Pengguna boleh mengemas kini pemandu atau menyemak masalah terlalu panas, dsb. Biarkan laman web ini dengan teliti memperkenalkan kepada pengguna penyelesaian kepada skrin biru win11 clockwatchdogtimeout. Penyelesaian kepada clockwatchdogtimeout blue screen win11 1. Kemas kini pemacu: Mengemas kini pemacu CPU dan motherboard boleh menyelesaikan masalah. Anda boleh memuat turun pemacu terkini dengan melawati tapak web pengilang. 2. Semak isu terlalu panas: Terlalu panas juga mungkin salah satu punca ralat ini.

Urutan talian sambungan SPDIFOUT pada papan induk Baru-baru ini, saya menghadapi masalah mengenai urutan pendawaian wayar. Saya menyemak dalam talian Beberapa maklumat mengatakan bahawa 1, 2, dan 4 sepadan dengan keluar, +5V, dan tanah manakala maklumat lain mengatakan bahawa 1, 2, dan 4 sepadan dengan keluar, tanah dan +5V. Cara terbaik ialah menyemak manual papan induk anda Jika anda tidak menemui manual, anda boleh menggunakan multimeter untuk mengukurnya. Cari tanah dahulu, kemudian anda boleh menentukan susunan pendawaian yang lain. Cara menyambung pendawaian VDG papan induk Apabila menyambungkan pendawaian VDG papan induk, anda perlu palamkan satu hujung kabel VGA ke antara muka VGA monitor dan hujung satu lagi ke antara muka VGA kad grafik komputer. Sila berhati-hati untuk tidak memasukkannya ke dalam port VGA motherboard. Setelah disambungkan, anda boleh

Dalam pembangunan aplikasi Vue, menggunakan vue-resource untuk membuat permintaan HTTP adalah operasi biasa. Walaupun vue-resource menyediakan banyak fungsi yang mudah, kadangkala kami menghadapi mesej ralat seperti "Ralat: timeoutofxxxmsexceeded". Ralat ini biasanya disebabkan oleh tamat masa permintaan. Jadi, dalam kes ini, bagaimana kita harus menyelesaikan masalah ini? 1. Tingkatkan tamat masa permintaan Pertama, kita boleh meningkatkan masa tamat permintaan sebanyak
