當前位置:首頁 » 編程語言 » php獲取協議

php獲取協議

發布時間: 2025-08-30 07:33:16

A. php的curl如何使用head協議來獲取資源的大小等信息

其實curl裡面早就有對HEAD協議的支持// 只需要在你的代碼中加上這樣一行,就會自動選擇head協議
curl_setopt($ch, CURLOPT_NOBODY, true);
如果你要讀取
Content-Length
,那麼只需要在curl_exec後// 讀取的header里的Content-Length值
$size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
需要說明的是HEAD協議雖然被大部分伺服器支持,但也不是說所有的伺服器都支持,有的伺服器為了防抓取,在設置中幹掉了這個協議。而
Content-Length
也不是必須的欄位,你應該做到如果有這個值,而且超過了最大值,可以返回錯誤,如果沒有這個值,或者沒有超過最大值,就必須自己通過已經下載的內容大小來判斷。
至於你說的最大資源下載長度,我還沒看到這個設置項,不過這個問題有一個更加美好的解決方案,那就是用到
CURLOPT_HEADERFUNCTION和CURLOPT_WRITEFUNCTION
兩個回調,那麼就只需要一次請求即可完成所有的判斷,而且可以隨時斷掉$size = 0;$max_size = 123456;
curl_setopt($ch, CURLOPT_HEADERFUNCTION, function ($ch, $str) {
// 第一個參數是curl資源,第二個參數是每一行獨立的header!
list ($name, $value) = array_map('trim', explode(':', $str, 2));
$name = strtolower($name);
// 判斷大小啦
if ('content-length' == $name) {
if ($value $max_size) {
return 0; // 返回0就會中斷讀取}}});
// 對於沒有content-length的,我們一邊讀取一邊判斷
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function ($ch, $str) use (&$size) {
$len = strlen($str);
$size += $len;
if ($size $max_size) {

熱點內容
c語言ifelse語句配對 發布:2025-08-30 10:12:52 瀏覽:286
mui緩存數據 發布:2025-08-30 10:08:09 瀏覽:755
oracle安裝腳本 發布:2025-08-30 09:56:57 瀏覽:638
小麥存儲量 發布:2025-08-30 09:49:03 瀏覽:955
掛鎖怎麼改密碼 發布:2025-08-30 09:47:31 瀏覽:569
優酷上傳視頻比例 發布:2025-08-30 09:37:42 瀏覽:368
我的世界怎麼看伺服器直連地址 發布:2025-08-30 09:37:03 瀏覽:554
視頻文件的存儲方式 發布:2025-08-30 09:28:24 瀏覽:148
u解壓 發布:2025-08-30 09:22:15 瀏覽:804
伺服器創建資料庫 發布:2025-08-30 09:07:36 瀏覽:678