Rumah php教程 php手册 PHP file_get_contents设置超时处理方法

PHP file_get_contents设置超时处理方法

Jun 06, 2016 pm 08:27 PM
file_get_contents Pemprosesan tamat masa

今天说的这篇是讲超时的,确实在跨服务器提交的时候,不可避免的会遇到超时的情况,这个时候怎么办?set_time_limit是没有用的,只有用context中的timeout时间来

file_get_contents的超时处理

话说,从PHP5开始,file_get_content已经支持context了(手册上写着:5.0.0 Added the context support. ),也就是说,从5.0开始,file_get_contents其实也可以POST数据。

今天说的这篇是讲超时的,确实在跨服务器提交的时候,不可避免的会遇到超时的情况,这个时候怎么办?set_time_limit是没有用的,只有用context中的timeout时间来控制。相反,我们不是要抑止,而是要管理。比如在超时返回错误后,进行一次尝试,就象js中的 settimeout那样,对函数重新处理。错误超过3次或者5次后,我们就确实的认为无法连接服务器而彻底放弃。这,是一个好办法,应该值得推荐使用。其实。不全是file_get_contents,只要支持context的都应该加上,,避免超时浪费时间。这样可以被支持的函数大致有:fsocketopen(该函数的最后一个参数。好象比较推荐在读stream的时候,使用stream_time_out函数进行控制),fopen(也是从PHP5开始加入context支持),file(PHP5加入支持),curl(curl有自已的变量 CURLOPT_TIMEOUT)等 。

在使用file_get_contents函数的时候,经常会出现超时的情况,在这里要通过查看一下错误提示,看看是哪种错误,比较常见的是读取超 时,这种情况大家可以通过一些方法来尽量的避免或者解决。这里就简单介绍两种:

一、增加超时的时间限制

这里需要注意:set_time_limit只是设置你的PHP程序的超时时间,而不是file_get_contents函数读取URL的超时时 间。

我一开始以为set_time_limit也能影响到file_get_contents,后来经测试,是无效的。真正的修改 file_get_contents延时可以用resource $context的timeout参数:

复制代码 代码如下:


$opts = array(  
  'http'=>array(  
    'method'=>"GET",  
    'timeout'=>1,//单位秒 
   )  
);   

 $cnt=0;  
while($cntecho $cnt;  
echo $bb; 

二、一次有延时的话那就多试几次

有时候失败是因为网络等因素造成,没有解决办法,但是可以修改程序,失败时重试几次,仍然失败就放弃,因为file_get_contents()如果失 败将返回 FALSE,所以可以下面这样编写代码:

复制代码 代码如下:


$cnt=0;  
 while($cnt

以上方法对付超时已经OK了。那么Post呢?细心点有人发现了'method'=>”GET”, 对!是不是能设置成post呢?百度找了下相关资料,还真可以!而且有人写出了山寨版的post传值函数,如下:

复制代码 代码如下:


function Post($url, $post = null){  
    $context = array ();  
    if (is_array ( $post )) {  
        ksort ( $post );  
        $context ['http'] = array (  
            'timeout' => 60,   
            'method' => 'POST',   
            'content' => http_build_query( $post, '', '&' )  
         );  

    }  
    return file_get_contents ( $url, false, stream_context_create ( $context ) );  
}  

 $data = array (  
    'name' => 'test',  
    'email' => 'admin@admin.com',  
    'submit' => 'submit',  
);  
echo Post ( 'http://www.jb51.net', $data ); 

OK , 上面函数完美了,既解决了超时控制又解决了Post传值。

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

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

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

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

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

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

See all articles