免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

php加載數據超時,php 超時

php進程超時接口返回504錯誤分析

在一次接口測試中,發現返回的http 504 time out 的錯誤,然后查看了php-fpm的錯誤日志,發現了如下錯誤

創新互聯公司專注于網站建設|企業網站維護|優化|托管以及網絡推廣,積累了大量的網站設計與制作經驗,為許多企業提供了網站定制設計服務,案例作品覆蓋成都自上料攪拌車等行業。能根據企業所處的行業與銷售的產品,結合品牌形象的塑造,量身策劃品質網站。

從表現上看,是php進程超時導致的進程被kill了,那么這個超時時間以及kill的機制是跟哪些參數有關呢,這里系統這里一下。

Nginx服務一般因為php的錯誤或者超時會有兩種錯誤碼502 bad Gateway 或者 504 Gateway Time-out

一種情況是php產生了語法錯誤,比如循環調用、變量作用域錯誤、方法不存在等,如果開啟錯誤日志輸出的話,這種錯誤在php-fpm的錯誤日志中是可以看到調用棧信息的。

另外一種情況可能就是超時引起的php-fpm主動kill的情況,在php.ini和php.fpm中有兩個配置項,用來管理php腳本的最大執行時間

當php腳本的執行時間超過這個時間時,PHP-FPM不只會終止腳本的執行,還會終止執行腳本的Worker進程。所以Nginx會發現與自己通信的連接斷掉了,就會返回給客戶端502錯誤。

以頂部的錯誤為例,當報502錯誤是,nginx的errorlog中有如下日志,:

所以只需將這兩項的值調大一些就可以讓PHP腳本不會因為執行時間長而被終止了。request_terminate_timeout可以覆蓋max_execution_time,

所以如果不想改全局的php.ini,那只改PHP-FPM的配置就可以了。

此外要注意的是Nginx的upstream模塊中的max_fail和fail_timeout兩項。這兩個配置表示在fail_timeout事件內,如果fail的測試達到max_fail,那么在接下來的fail_timeout時間內,Nginx都會認為上游服務器掛掉了,都會返回502錯誤。

所以可以將max_fail調大一些,將fail_timeout調小一些。

PHP-FPM設置的腳本最大執行時間已經夠長了,但執行耗時PHP腳本時,發現Nginx報錯從502變為504了。這是為什么呢?

因為我們修改的只是PHP的配置,Nginx中也有關于與上游服務器通信超時時間的配置

以Nginx超時時間為90秒,PHP-FPM超時時間為300秒為例,報504 Gateway Timeout錯誤時的Nginx錯誤訪問日志如下:

調高這三項的值(主要是read和send兩項,默認不配置的話Nginx會將超時時間設為60秒)之后,504錯誤也解決了。

而且這三項配置可以配置在http、server級別,也可以配置在location級別。擔心影響其他應用的話,就配置在自己應用的location中吧。

要注意的是factcgi_connect/read/send_timeout是對FastCGI生效的,而proxy_connect/read/send_timeout是對proxy_pass生效的。

參考鏈接: 感謝分享!

PHP 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'=60,

)

);

$context

=

stream_context_create($opts);

$html

=file_get_contents('',

false,

$context);

fpassthru($fp);

二、一次有延時的話那就多試幾次

有時候失敗是因為網絡等因素造成,沒有解決辦法,但是可以修改程序,失敗時重試幾次,仍然失敗就放棄,因為file_get_contents()如果失敗將返回

FALSE,所以可以下面這樣編寫代碼:

復制代碼

代碼如下:

$cnt=0;

while($cnt

3

($str=@file_get_contents('http…'))===FALSE)

$cnt++;

怎樣解決php頁面的載入超時問題?

set_time_limit(0);

這個是不限制上傳文件的時間,寫到頁面就可以

幾種常見的PHP超時處理方法

進入php源程序目錄中的ext目錄中,這里存放著各個擴展模塊的源代碼,選擇你需要的模塊,比如curl模塊:cd curl

執行phpize生成編譯文件,phpize在PHP安裝目錄的bin目錄下

/usr/local/php5/bin/phpize

運行時,可能會報錯:Cannot find autoconf. Please check your autoconf installation and

the $PHP_AUTOCONF

environment variable is set correctly and then rerun this

script.,需要安裝autoconf:

yum install autoconf(RedHat或者CentOS)、apt-get install

autoconf(Ubuntu Linux)

/usr/local/php5/bin/php -v

執行這個命令時,php會去檢查配置文件是否正確,如果有配置錯誤,

這里會報錯,可以根據錯誤信息去排查!

php處理大量數據時,運行到一定時間就中斷了,請問如何解決

php處理數據時會有一個等待時間,就是所說的超時時間,而且如果使用mysql的話,它也有一個超時時間,運行一串代碼時間如果超過配置文件的時間,會被中斷不運行。第一種你可以修改php配置文件timeout的運行時間,第二你可以分批處理大量數據,注意是分批處理,就OK了。

PHP 用fopen讀取網頁內容總是超時

好像默認的是每個頁面中腳本的執行時間最大30秒,估計你在腳本運行抓取這10頁面時超過了30秒,所以就會報超時!

你可以在腳本前面加一句 ini_set('max_execution_time', '0');

把腳本最大執行時間設置為0,這樣就是無時間限制,直到腳本執行完成!

網站標題:php加載數據超時,php 超時
文章來源:http://m.newbst.com/article48/phhiep.html

成都網站建設公司_創新互聯,為您提供ChatGPT標簽優化品牌網站設計App設計建站公司

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

搜索引擎優化