欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP http請求超時(shí)問題解決方案

 更新時(shí)間:2020年11月13日 10:26:53   作者:小猿筆記  
這篇文章主要介紹了PHP http請求超時(shí)問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一,http請求超時(shí)時(shí)間

可能出現(xiàn)的場景:

1,curl進(jìn)程運(yùn)行了一個(gè)世紀(jì)還木結(jié)束,curl的時(shí)候設(shè)置了超時(shí)時(shí)間 --connect-timeout 1000

2,operation timed out after 1000 milliseconds with 0 bytes received

3,connect() timed out!

wget對超時(shí)時(shí)間, 是有分階段的, 比如說請求的超時(shí), 傳輸?shù)某瑫r(shí),同樣HTTP請求有兩個(gè)超時(shí)時(shí)間:一個(gè)是連接超時(shí)時(shí)間,另一個(gè)是數(shù)據(jù)傳輸?shù)淖畲笤试S時(shí)間,出現(xiàn)問題就要看是哪個(gè)超時(shí)時(shí)間出問題了。

curl命令行
連接超時(shí)時(shí)間用 --connect-timeout 參數(shù)來指定,數(shù)據(jù)傳輸?shù)淖畲笤试S時(shí)間用 -m 參數(shù)來指定,時(shí)間是毫秒

例如:

curl --connect-timeout 10 -m 20 "http://***"

連接超時(shí)的話,出錯(cuò)提示形如:

curl: (28) connect() timed out!

數(shù)據(jù)傳輸?shù)淖畲笤试S時(shí)間超時(shí)的話,出錯(cuò)提示形如:

curl: (28) Operation timed out after 2000 milliseconds with 0 bytes received

使用PHP的curl_init

<?php // create a new cURL resource $ch = curl_init(); // set URL and other appropriate options curl_setopt($ch, CURLOPT_URL, "http://www.example.com/"); curl_setopt($ch, CURLOPT_HEADER, 0);

//連接超時(shí)時(shí)間 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1000);

//數(shù)據(jù)傳輸?shù)淖畲笤试S時(shí)間 curl_setopt($ch, CURLOPT_TIMEOUT, 1000); // grab URL and pass it to the browser curl_exec($ch); // close cURL resource, and free up system resources curl_close($ch);

//使用curl_error($ch)查看錯(cuò)誤的詳情 var_dump(curl_error($ch));

二,頁面執(zhí)行時(shí)間

當(dāng)你的頁面有大量數(shù)據(jù)時(shí),建議使用set_time_limit()來控制運(yùn)行時(shí)間,配置該頁最久執(zhí)行時(shí)間。

設(shè)定一個(gè)程式所允許執(zhí)行的秒數(shù),如果到達(dá)限制的時(shí)間,程式將會傳回錯(cuò)誤,時(shí)間是秒單位。

php.ini:它預(yù)設(shè)的限制時(shí)間是30秒,max_execution_time的值定義在結(jié)構(gòu)檔案中,如果將秒數(shù)設(shè)為0,表示無時(shí)間上的限制,修改后重新啟動apache/nginx服務(wù)器

php代碼:set_time_limit(800);

這個(gè)函數(shù)指定了當(dāng)前所在php腳本的最大執(zhí)行時(shí)間為800秒,實(shí)際上最大執(zhí)行時(shí)間=php.ini里的max_execution_time數(shù)值 - 當(dāng)前腳本已經(jīng)執(zhí)行的時(shí)間 + 設(shè)定值

假如php.ini里的max_execution_time=30,當(dāng)前腳本已經(jīng)執(zhí)行5秒,則:

最大執(zhí)行時(shí)間=30-5+800=825秒。

注意 : 當(dāng)PHP是執(zhí)行在安全模式時(shí),set_time_limit( )將不會有結(jié)果,除非是關(guān)閉安全模式或是修改結(jié)構(gòu)檔案中的時(shí)間限制。

三,php長連接

如果我們需要一個(gè)腳本持續(xù)的運(yùn)行,那么我們就要通過php長連接的方式,來達(dá)到運(yùn)行目的。通過 set_time_limit 來設(shè)置一個(gè)腳本的執(zhí)行時(shí)間為無限長;然后使用 flush() 和 ob_flush() 來清除服務(wù)器緩沖區(qū),隨時(shí)輸出腳本的返回值。

如下面這段腳本:

<?php
header("Content-Type: text/plain");
set_time_limit(0);
$infoString = "Hello World" . "\n";
while( isset($infoString) )
{
  echo $infoString;
  flush();
  ob_flush();
  sleep(5);
}
?>

當(dāng)我們執(zhí)行后,每隔5秒鐘,我們會得到一行 Hello World ,如果不按停止按鈕,瀏覽器會不停的一行一行繼續(xù)加載。

通過這一方法,我們可以完成很多功能,例如機(jī)器人爬蟲、即時(shí)留言板等程序。

如果要停止運(yùn)行只能重啟php-fpm:

查看php-fpm進(jìn)程數(shù):

ps aux | grep -c php-fpm

查看運(yùn)行內(nèi)存

/usr/bin/php -i|grep mem

重啟php-fpm

/etc/init.d/php-fpm restart

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • PHP生成自適應(yīng)大小的縮略圖類及使用方法分享

    PHP生成自適應(yīng)大小的縮略圖類及使用方法分享

    PHP生成縮略圖網(wǎng)上代碼很多,大部分感覺寫的太死,而且不能自適應(yīng)大小。下面放出一個(gè)老外的版本
    2014-05-05
  • AES加解密在php接口請求過程中的應(yīng)用示例

    AES加解密在php接口請求過程中的應(yīng)用示例

    在我們的編程的過程中,經(jīng)常會遇到加密的情況,怎么才會合理運(yùn)用,本篇文章主要介紹了AES加解密在php接口請求過程中的應(yīng)用示例,有需要的可以了解一下。
    2016-10-10
  • thinkPHP中create方法與令牌驗(yàn)證實(shí)例淺析

    thinkPHP中create方法與令牌驗(yàn)證實(shí)例淺析

    這篇文章主要介紹了thinkPHP中create方法與令牌驗(yàn)證,以一個(gè)簡單實(shí)例形式分析了thinkPHP中create方法與令牌驗(yàn)證增加表單安全性的相關(guān)技巧,代碼備有詳盡注釋說明,需要的朋友可以參考下
    2015-12-12
  • Zend Framework框架的數(shù)據(jù)庫追蹤器使用示例

    Zend Framework框架的數(shù)據(jù)庫追蹤器使用示例

    這篇文章主要介紹了Zend Framework框架的數(shù)據(jù)庫追蹤器使用示例,現(xiàn)把追蹤器的使用方法分享給大家,需要的朋友可以參考下
    2014-03-03
  • Yii2的XSS攻擊防范策略分析

    Yii2的XSS攻擊防范策略分析

    這篇文章主要介紹了Yii2的XSS攻擊防范策略,較為詳細(xì)的分析了XSS攻擊的原理及Yii2相應(yīng)的防范策略,需要的朋友可以參考下
    2016-08-08
  • PHP編寫學(xué)校網(wǎng)站上新生注冊登陸程序的實(shí)例分享

    PHP編寫學(xué)校網(wǎng)站上新生注冊登陸程序的實(shí)例分享

    這篇文章主要介紹了使用PHP編寫學(xué)校網(wǎng)站上新生注冊登陸程序的實(shí)例分享,只包括簡單的數(shù)據(jù)庫信息錄入和查詢等步驟的一些關(guān)鍵點(diǎn),需要的朋友可以參考下
    2016-03-03
  • PHP讀取mssql json數(shù)據(jù)中文亂碼的解決辦法

    PHP讀取mssql json數(shù)據(jù)中文亂碼的解決辦法

    PHP及網(wǎng)頁使用UTF-8編碼,數(shù)據(jù)庫是sql server2008,使用默認(rèn)編碼,當(dāng)讀取數(shù)據(jù)庫數(shù)據(jù)時(shí),使用php自帶的json_encode()返回到前端,結(jié)果中文不顯示。下面腳本之家小編給大家介紹PHP讀取mssql json數(shù)據(jù)中文亂碼的解決辦法,需要的朋友一起學(xué)習(xí)
    2016-04-04
  • Laravel利用gulp如何構(gòu)建前端資源詳解

    Laravel利用gulp如何構(gòu)建前端資源詳解

    Gulp 是一個(gè)自動化工具,前端開發(fā)者可以使用它來處理常見任務(wù),下面這篇文章主要給大家介紹了關(guān)于Laravel利用gulp如何構(gòu)建前端資源的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧
    2018-06-06
  • 純PHP生成的一個(gè)樹葉圖片畫圖例子

    純PHP生成的一個(gè)樹葉圖片畫圖例子

    這篇文章主要介紹了純PHP生成的一個(gè)樹葉圖片畫圖例子,希望可以帶給使用PHP進(jìn)行圖像編程的朋友一些幫助。
    2014-04-04
  • 使用composer安裝使用thinkphp6.0框架問題【視頻教程】

    使用composer安裝使用thinkphp6.0框架問題【視頻教程】

    這篇文章主要介紹了使用composer安裝使用thinkphp6.0框架問題,通過一個(gè)小視頻給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10

最新評論