濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > PHP http請(qǐng)求超時(shí)問(wèn)題解決方案

PHP http請(qǐng)求超時(shí)問(wèn)題解決方案

熱門(mén)標(biāo)簽:黔江400電話如何辦理 中原區(qū)電話機(jī)器人價(jià)格 地圖標(biāo)注視頻廣告入駐 OMG地圖標(biāo)注app gps 地圖標(biāo)注軟件 電銷(xiāo)機(jī)器人便宜的有嗎 招標(biāo)自動(dòng)語(yǔ)音外呼系統(tǒng) 400電話鄭州申請(qǐng) ai電話機(jī)器人加盟代理

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

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

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對(duì)超時(shí)時(shí)間, 是有分階段的, 比如說(shuō)請(qǐng)求的超時(shí), 傳輸?shù)某瑫r(shí),同樣HTTP請(qǐng)求有兩個(gè)超時(shí)時(shí)間:一個(gè)是連接超時(shí)時(shí)間,另一個(gè)是數(shù)據(jù)傳輸?shù)淖畲笤试S時(shí)間,出現(xiàn)問(wèn)題就要看是哪個(gè)超時(shí)時(shí)間出問(wèn)題了。

curl命令行
連接超時(shí)時(shí)間用 --connect-timeout 參數(shù)來(lái)指定,數(shù)據(jù)傳輸?shù)淖畲笤试S時(shí)間用 -m 參數(shù)來(lái)指定,時(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));

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

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

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

php.ini:它預(yù)設(shè)的限制時(shí)間是30秒,max_execution_time的值定義在結(jié)構(gòu)檔案中,如果將秒數(shù)設(shè)為0,表示無(wú)時(shí)間上的限制,修改后重新啟動(dòng)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( )將不會(huì)有結(jié)果,除非是關(guān)閉安全模式或是修改結(jié)構(gòu)檔案中的時(shí)間限制。

三,php長(zhǎng)連接

如果我們需要一個(gè)腳本持續(xù)的運(yùn)行,那么我們就要通過(guò)php長(zhǎng)連接的方式,來(lái)達(dá)到運(yùn)行目的。通過(guò) set_time_limit 來(lái)設(shè)置一個(gè)腳本的執(zhí)行時(shí)間為無(wú)限長(zhǎng);然后使用 flush() 和 ob_flush() 來(lái)清除服務(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秒鐘,我們會(huì)得到一行 Hello World ,如果不按停止按鈕,瀏覽器會(huì)不停的一行一行繼續(xù)加載。

通過(guò)這一方法,我們可以完成很多功能,例如機(jī)器人爬蟲(chóng)、即時(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

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

您可能感興趣的文章:
  • AngularJs的$http發(fā)送POST請(qǐng)求,php無(wú)法接收Post的數(shù)據(jù)問(wèn)題及解決方案
  • PHP使用Http Post請(qǐng)求發(fā)送Json對(duì)象數(shù)據(jù)代碼解析
  • PHP利用curl發(fā)送HTTP請(qǐng)求的實(shí)例代碼
  • php如何獲取Http請(qǐng)求
  • PHP swoole中http_server的配置與使用方法實(shí)例分析
  • PHP的HTTP客戶(hù)端Guzzle簡(jiǎn)單使用方法分析
  • 對(duì)php 判斷http還是https,以及獲得當(dāng)前url的方法詳解
  • PHP獲取HTTP body內(nèi)容的方法
  • PHP實(shí)現(xiàn)模擬http請(qǐng)求的方法分析
  • HTTP頭隱藏PHP版本號(hào)實(shí)現(xiàn)過(guò)程解析

標(biāo)簽:池州 濟(jì)源 北京 孝感 日照 阿里 哈密 那曲

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP http請(qǐng)求超時(shí)問(wèn)題解決方案》,本文關(guān)鍵詞  PHP,http,請(qǐng)求,超時(shí),問(wèn)題,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP http請(qǐng)求超時(shí)問(wèn)題解決方案》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于PHP http請(qǐng)求超時(shí)問(wèn)題解決方案的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    嘉黎县| 漳平市| 广昌县| 临武县| 东安县| 宣汉县| 明光市| 修武县| 克东县| 汨罗市| 仙居县| 老河口市| 新河县| 阜南县| 大足县| 广平县| 桦南县| 永和县| 吉林省| 鹤峰县| 海阳市| 剑阁县| 淄博市| 洛阳市| 镇赉县| 军事| 平江县| 浦东新区| 特克斯县| 河北区| 普兰县| 万载县| 桓仁| 卢氏县| 清丰县| 湟中县| 尤溪县| 武胜县| 陈巴尔虎旗| 息烽县| 始兴县|