日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > php教程 > cURL函數(shù)庫錯誤碼說明之PHP curl_errno函數(shù)

cURL函數(shù)庫錯誤碼說明之PHP curl_errno函數(shù)

來源:程序員人生   發(fā)布時間:2014-03-15 00:34:28 閱讀次數(shù):10960次

背景概述:游戲接口是使用PHP cURL擴展進行請求操作,但是,被請求的服務器經常會無故的不響應或者超時,總之,就是請求之后收不到響應回來的數(shù)據(jù),這時候可不能說對方API接口有問題,或者服務器有故障,總之,可能出現(xiàn)的問題是非常之多,不能一概而論。

一、給出一段常用的PHP cURL代碼:

  1. function sendRequestGame($url
  2.     $header = array('Expect:'); 
  3.     $ch = curl_init(); 
  4.     curl_setopt($ch, CURLOPT_URL, $url); 
  5.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  6.     curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
  7.     curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
  8.     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); 
  9.     $retData = curl_exec( $ch ); 
  10.     curl_close( $ch ); 
  11.     return $retData

經常使用PHP cURL函數(shù)的人,一定不會陌生吧,同時,我也相信大部分PHPer也是這樣寫代碼的。至少核心部分就是這樣,根本沒有判斷這個請求失敗了,是什么情況產生的。

誠然,通過嚴重的安全事故導致我必須重新審核這個cURL庫,該怎樣保證我的請求是穩(wěn)定可靠的。當出現(xiàn)失敗之后,我要知道是什么原因導致的。第一時間知道并反饋到人,進行及時的溝通協(xié)調與修復。

現(xiàn)在我們?yōu)榱吮WC每次請求的穩(wěn)定可靠性,必須加入日志功能,即把失敗時請求的相關參數(shù)狀態(tài)和錯誤碼一起記錄到日志中,方便,我們失敗之后去檢查,看代碼:

  1. function sendRequestGame($url
  2.     $header = array('Expect:'); 
  3.     $ch = curl_init(); 
  4.     curl_setopt($ch, CURLOPT_URL, $url); 
  5.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  6.     curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
  7.     curl_setopt($ch, CURLOPT_TIMEOUT, 2); 
  8.     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); 
  9.  $return  = curl_exec( $ch ); 
  10.  $errno = curl_errno( $ch ); 
  11.  $info  = curl_getinfo( $ch ); 
  12.  $info['errno'] = $errno
  13.     curl_close( $ch ); 
  14.  $log = json_encode( $info ); 
  15.  putLog( $log ); 
  16.     return $return
  17. /** 
  18.  * 打日志。 
  19.  * @param string $log 日志內容。 
  20.  * @return void 
  21.  */ 
  22. function putLog( $log ) 
  23.  $log .= "nn"
  24.  $logDir = dirname( __FILE__ ); 
  25.  $logPath = $logDir . "/curl_log.txt"
  26.  if ( !file_exists$logPath ) ) 
  27.  { 
  28.   $handle = fopen$logPath'w' ); 
  29.   fclose ( $handle ); 
  30.  } 
  31.  file_put_contents$logPath$log, FILE_APPEND ); 

現(xiàn)在調用 sendRequestGame 函數(shù)的時候,會將每次請求的信息給json_encode之后保存到日志文件 curl_log.txt中。這樣,我們就可以清楚地知道,每次請求到底發(fā)生了什么情況,改進之后,增加了兩個函數(shù):

  1. $errno = curl_errno( $ch ); 
  2. $info  = curl_getinfo( $ch ); 

這兩個函數(shù)非常的關鍵,第一個 curl_errno是返回當前請求的錯誤碼,0代表沒有錯誤,是一個Ok正常的請求。非0代碼請求出現(xiàn)了錯誤。但是,大部分錯誤發(fā)生時,請求都沒有正確到達URL所指定的服務器。如:主機打不到、網址錯誤、404,當然,不排除有500這種內部服務器錯誤的存在。

第二個是函數(shù)非常重要,curl_getinfo函數(shù)會獲取當前請求的相關信息:

  1. Array 
  2.     [url] => http://www.phpfensi.com/ 
  3.     [content_type] => text/html; charset=UTF-8 
  4.     [http_code] => 200 
  5.     [header_size] => 321 
  6.     [request_size] => 53 
  7.     [filetime] => -1 
  8.     [ssl_verify_result] => 0 
  9.     [redirect_count] => 0 
  10.     [total_time] => 2.075 
  11.     [namelookup_time] => 0 
  12.     [connect_time] => 0.031 
  13.     [pretransfer_time] => 0.031 
  14.     [size_upload] => 0 
  15.     [size_download] => 79042 
  16.     [speed_download] => 38092 
  17.     [speed_upload] => 0 
  18.     [download_content_length] => -1 
  19.     [upload_content_length] => 0 
  20.     [starttransfer_time] => 1.388 
  21.     [redirect_time] => 0 
  22.     [certinfo] => Array 
  23.         ( 
  24.         ) 
  25.     [redirect_url] => 

我相信大家人字面意思就能看懂7788.不明白的話,自己去看PHP官方手冊吧,以下,我再附上 curl error code,即 curl_errno函數(shù)返回的數(shù)字說明:

CURLE_UNSUPPORTED_PROTOCOL (1) – 您傳送給 libcurl 的網址使用了此 libcurl 不支持的協(xié)議。 可能是您沒有使用的編譯時選項造成了這種情況(可能是協(xié)議字符串拼寫有誤,或沒有指定協(xié)議 libcurl 代碼)。

CURLE_FAILED_INIT (2) – 非常早期的初始化代碼失敗。 可能是內部錯誤或問題。

CURLE_URL_MALFORMAT (3) – 網址格式不正確。

CURLE_COULDNT_RESOLVE_PROXY (5) – 無法解析代理服務器。 指定的代理服務器主機無法解析。

CURLE_COULDNT_RESOLVE_HOST (6) – 無法解析主機。 指定的遠程主機無法解析。

CURLE_COULDNT_CONNECT (7) – 無法通過 connect() 連接至主機或代理服務器。

CURLE_FTP_WEIRD_SERVER_REPLY (8) – 在連接到 FTP 服務器后,libcurl 需要收到特定的回復。 此錯誤代碼表示收到了不正常或不正確的回復。 指定的遠程服務器可能不是正確的 FTP 服務器。

CURLE_REMOTE_ACCESS_DENIED (9) – 我們無法訪問網址中指定的資源。 對于 FTP,如果嘗試更改為遠程目錄,就會發(fā)生這種情況。

CURLE_FTP_WEIRD_PASS_REPLY (11) – 在將 FTP 密碼發(fā)送到服務器后,libcurl 需要收到正確的回復。 此錯誤代碼表示返回的是意外的代碼。

CURLE_FTP_WEIRD_PASV_REPLY (13) – libcurl 無法從服務器端收到有用的結果,作為對 PASV 或 EPSV 命令的響應。 服務器有問題。

CURLE_FTP_WEIRD_227_FORMAT (14) – FTP 服務器返回 227 行作為對 PASV 命令的響應。如果 libcurl 無法解析此行,就會返回此代碼。

CURLE_FTP_CANT_GET_HOST (15) – 在查找用于新連接的主機時出現(xiàn)內部錯誤。

CURLE_FTP_COULDNT_SET_TYPE (17) – 在嘗試將傳輸模式設置為二進制或 ascii 時發(fā)生錯誤。

CURLE_PARTIAL_FILE (18) – 文件傳輸尺寸小于或大于預期。當服務器先報告了一個預期的傳輸尺寸,然后所傳送的數(shù)據(jù)與先前指定尺寸不相符時,就會發(fā)生此錯誤。

CURLE_FTP_COULDNT_RETR_FILE (19) – ‘RETR’ 命令收到了不正常的回復,或完成的傳輸尺寸為零字節(jié)。

CURLE_QUOTE_ERROR (21) – 在向遠程服務器發(fā)送自定義 “QUOTE” 命令時,其中一個命令返回的錯誤代碼為 400 或更大的數(shù)字(對于 FTP),或以其他方式表明命令無法成功完成。

CURLE_HTTP_RETURNED_ERROR (22) – 如果 CURLOPT_FAILONERROR 設置為 TRUE,且 HTTP 服務器返回 >= 400 的錯誤代碼,就會返回此代碼。 (此錯誤代碼以前又稱為 CURLE_HTTP_NOT_FOUND。)

CURLE_WRITE_ERROR (23) – 在向本地文件寫入所收到的數(shù)據(jù)時發(fā)生錯誤,或由寫入回調 (write callback) 向 libcurl 返回了一個錯誤。

CURLE_UPLOAD_FAILED (25) – 無法開始上傳。 對于 FTP,服務器通常會拒絕執(zhí)行 STOR 命令。錯誤緩沖區(qū)通常會提供服務器對此問題的說明。 (此錯誤代碼以前又稱為 CURLE_FTP_COULDNT_STOR_FILE。)

CURLE_READ_ERROR (26) – 讀取本地文件時遇到問題,或由讀取回調 (read callback) 返回了一個錯誤。

CURLE_OUT_OF_MEMORY (27) – 內存分配請求失敗。此錯誤比較嚴重,若發(fā)生此錯誤,則表明出現(xiàn)了非常嚴重的問題。

CURLE_OPERATION_TIMEDOUT (28) – 操作超時。 已達到根據(jù)相應情況指定的超時時間。 請注意: 自 Urchin 6.6.0.2 開始,超時時間可以自行更改。 要指定遠程日志下載超時,請打開 urchin.conf 文件,取消以下行的注釋標記:

#DownloadTimeout: 30

CURLE_FTP_PORT_FAILED (30) – FTP PORT 命令返回錯誤。 在沒有為 libcurl 指定適當?shù)牡刂肥褂脮r,最有可能發(fā)生此問題。 請參閱 CURLOPT_FTPPORT。

CURLE_FTP_COULDNT_USE_REST (31) – FTP REST 命令返回錯誤。如果服務器正常,則應當不會發(fā)生這種情況。

CURLE_RANGE_ERROR (33) – 服務器不支持或不接受范圍請求。

CURLE_HTTP_POST_ERROR (34) – 此問題比較少見,主要由內部混亂引發(fā)。

CURLE_SSL_CONNECT_ERROR (35) – 同時使用 SSL/TLS 時可能會發(fā)生此錯誤。您可以訪問錯誤緩沖區(qū)查看相應信息,其中會對此問題進行更詳細的介紹。可能是證書(文件格式、路徑、許可)、密碼及其他因素導致了此問題。

CURLE_FTP_BAD_DOWNLOAD_RESUME (36) – 嘗試恢復超過文件大小限制的 FTP 連接。

CURLE_FILE_COULDNT_READ_FILE (37) – 無法打開 FILE:// 路徑下的文件。原因很可能是文件路徑無法識別現(xiàn)有文件。 建議您檢查文件的訪問權限。

CURLE_LDAP_CANNOT_BIND (38) – LDAP 無法綁定。LDAP 綁定操作失敗。

CURLE_LDAP_SEARCH_FAILED (39) – LDAP 搜索無法進行。

CURLE_FUNCTION_NOT_FOUND (41) – 找不到函數(shù)。 找不到必要的 zlib 函數(shù)。

CURLE_ABORTED_BY_CALLBACK (42) – 由回調中止。 回調向 libcurl 返回了 “abort”。

CURLE_BAD_FUNCTION_ARGUMENT (43) – 內部錯誤。 使用了不正確的參數(shù)調用函數(shù)。

CURLE_INTERFACE_FAILED (45) – 界面錯誤。 指定的外部界面無法使用。 請通過 CURLOPT_INTERFACE 設置要使用哪個界面來處理外部連接的來源 IP 地址。 (此錯誤代碼以前又稱為 CURLE_HTTP_PORT_FAILED。)

CURLE_TOO_MANY_REDIRECTS (47) – 重定向過多。 進行重定向時,libcurl 達到了網頁點擊上限。請使用 CURLOPT_MAXREDIRS 設置上限。

CURLE_UNKNOWN_TELNET_OPTION (48) – 無法識別以 CURLOPT_TELNETOPTIONS 設置的選項。 請參閱相關文檔。

CURLE_TELNET_OPTION_SYNTAX (49) – telnet 選項字符串的格式不正確。

CURLE_PEER_FAILED_VERIFICATION (51) – 遠程服務器的 SSL 證書或 SSH md5 指紋不正確。

CURLE_GOT_NOTHING (52) – 服務器未返回任何數(shù)據(jù),在相應情況下,未返回任何數(shù)據(jù)就屬于出現(xiàn)錯誤。

CURLE_SSL_ENGINE_NOTFOUND (53) – 找不到指定的加密引擎。

CURLE_SSL_ENGINE_SETFAILED (54) – 無法將選定的 SSL 加密引擎設為默認選項。

CURLE_SEND_ERROR (55) – 無法發(fā)送網絡數(shù)據(jù)。

CURLE_RECV_ERROR (56) – 接收網絡數(shù)據(jù)失敗。

CURLE_SSL_CERTPROBLEM (58) – 本地客戶端證書有問題

CURLE_SSL_CIPHER (59) – 無法使用指定的密鑰

CURLE_SSL_CACERT (60) – 無法使用已知的 CA 證書驗證對等證書

CURLE_BAD_CONTENT_ENCODING (61) – 無法識別傳輸編碼

CURLE_LDAP_INVALID_URL (62) – LDAP 網址無效

CURLE_FILESIZE_EXCEEDED (63) – 超過了文件大小上限

CURLE_USE_SSL_FAILED (64) – 請求的 FTP SSL 級別失敗

CURLE_SEND_FAIL_REWIND (65) – 進行發(fā)送操作時,curl 必須回轉數(shù)據(jù)以便重新傳輸,但回轉操作未能成功

CURLE_SSL_ENGINE_INITFAILED (66) – SSL 引擎初始化失敗

CURLE_LOGIN_DENIED (67) – 遠程服務器拒絕 curl 登錄(7.13.1 新增功能)

CURLE_TFTP_NOTFOUND (68) – 在 TFTP 服務器上找不到文件

CURLE_TFTP_PERM (69) – 在 TFTP 服務器上遇到權限問題

CURLE_REMOTE_DISK_FULL (70) – 服務器磁盤空間不足

CURLE_TFTP_ILLEGAL (71) – TFTP 操作非法

CURLE_TFTP_UNKNOWNID (72) – TFTP 傳輸 ID 未知

CURLE_REMOTE_FILE_EXISTS (73) – 文件已存在,無法覆蓋

CURLE_TFTP_NOSUCHUSER (74) – 運行正常的 TFTP 服務器不會返回此錯誤

CURLE_CONV_FAILED (75) – 字符轉換失敗

CURLE_CONV_REQD (76) – 調用方必須注冊轉換回調

CURLE_SSL_CACERT_BADFILE (77) – 讀取 SSL CA 證書時遇到問題(可能是路徑錯誤或訪問權限問題)

CURLE_REMOTE_FILE_NOT_FOUND (78) – 網址中引用的資源不存在

CURLE_SSH (79) – SSH 會話中發(fā)生無法識別的錯誤

CURLE_SSL_SHUTDOWN_FAILED (80) – 無法終止 SSL 連接

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久九九视频 | 91精品国产高清一区二区三区 | 成人av福利 | 日韩一区在线视频 | 六月婷婷久久 | 日本精品久久久 | 日韩精品h | 日韩欧美电影在线观看 | 日韩一区二区三区在线播放 | 免费69视频| 性猛交xxxx乱大交孕妇2十 | 国产69精品久久久久毛片 | 久久久www成人免费精品 | 美日韩一区二区 | 国产一区二区三区久久久 | 日韩中文字幕电影 | 成人福利在线观看 | h黄视频 | 国产精品视频久久 | 精品一区二区久久久久久久网站 | 偷拍自拍在线观看 | 国产成人精品一区二区三区视频 | 九九热视频在线 | 99视频 | 亚洲成人av一区 | 偷拍自拍网 | 国产精品午夜一区二区欲梦 | 91精品久久久久久久久久入口 | av黄色免费 | 嫩草精品 | 在线第一页 | 亚洲精品成人无限看 | 精品在线一区 | 亚洲青青草 | 久久精品不卡 | 亚洲成人一区在线观看 | 精品中文久久 | www.色综合.com | 天堂91视频 | 日日夜夜狠狠操 | 久久久久成人精品免费播放动漫 |