我需要檢查一個特定的文件是否存在於遠程服務器上。使用is_file()
和file_exists()
不起作用。任何想法如何快速輕鬆地做到這一點?如何檢查一個文件是否存在從一個url
回答
,你必須使用捲曲
function is_url_exist($url){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($code == 200){
$status = true;
}else{
$status = false;
}
curl_close($ch);
return $status;
}
它工作正常,你有一個錯字行1功能應該是功能 –
你不需要CURL的... ...太多的開銷...檢查下面的答案(使用PHP的get_headers這個!) – patrick
像其他人一樣,它不是檢查它是否是文件,只是檢查URL。 'echo is_url_exists('http://stackoverflow.com')? '是':'不';'回顯'是'。 –
用curl做一個請求,看它是否返回一個404狀態碼。使用HEAD請求方法執行請求,以便僅返回沒有正文的標題。
我只是發現這個解決方案:
if(@getimagesize($remoteImageURL)){
//image exists!
}else{
//image does not exist.
}
來源:http://www.dreamincode.net/forums/topic/11197-checking-if-file-exists-on-remote-server/
你不需要捲曲爲......太只是想檢查一個文件是否存在或許沒有太多的開銷...
$headers=get_headers($url);
然後檢查$結果[0]包含200 OK(這意味着該文件是存在的)
一個函數來檢查URL的作品可能是這樣的:
function UR_exists($url){
$headers=get_headers($url);
return stripos($headers[0],"200 OK")?true:false;
}
/* You can test a URL like this (sample) */
if(UR_exists("http://www.amazingjokes.com/"))
echo "This page exists";
else
echo "This page does not exist";
'默認情況下,get_headers使用GET請求來獲取頭文件 - curl請求的開銷(並不確定引用的開銷是多少) - 存在一個浪費的GET請求,它會丟棄正文 - 而不是使用HEAD請求,只接收頭。 – AD7six
@ AD7six:我假設在內存中設置cURL會導致重載,我做了一些比較這兩種方法的測試,並且您是對的:如果您加載了cURL庫,那麼與get_headers相比,使用接受的方法始終更快。我比較了所有提到的3種方法:cURL是最快的,然後get_headers,然後getimagesize與增加的缺點getimagesize只會告訴你,如果圖像存在。這是被問到的,所以這裏仍然是一個有效的答案,但它不是很通用。 – patrick
@ ad7six你確定get_headers正在請求正文? fyi,你可以通過流上下文覆蓋GET請求: stream_context_set_default(['http'=> ['method'=>'HEAD']]); $ headers = get_headers('http://example.com'); – Tobias
喜根據我們在2臺不同服務器之間的測試,結果如下:
使用curl檢查10個.png文件(每個大約5mb)平均爲5.7秒。 使用標題檢查相同的東西平均需要7.8秒!
因此,在我們的測試中,如果您必須檢查較大的文件,捲曲速度會更快!
我們的捲曲的功能是:
function remote_file_exists($url){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($httpCode == 200){return true;}
return false;
}
這裏是我們的頭檢查樣本:
function UR_exists($url){
$headers=get_headers($url);
return stripos($headers[0],"200 OK")?true:false;
}
- 1. 檢查一個txt文件中是否存在很多URL(Python)
- 2. 我可以檢查一個文件是否存在於一個URL?
- 3. 如何檢查一個url(或webservice)是否在Nodejs中存在?
- 4. 檢查一個文件中是否存在一個值
- 5. 檢查一個文件是否存在於一個linux腳本
- 6. 如何檢查一個文件是否在一個目錄
- 7. 如何檢查一個文件夾是否存在使用PHP
- 8. 如何檢查一個文件是否存在於JavaScript中?
- 9. 如何檢查一個url是否存在於php
- 10. 如何檢查一個ALAsset是否仍然存在使用URL
- 11. 檢查URL是否存在,如果它是一個圖像
- 12. 如何檢查一個txt文件是否包含一個詞
- 13. PHP - 檢查一個文件夾中是否存在文件
- 14. 寫一個文件,並檢查文件是否存在
- 15. 如何檢查一個文件是否存在或不是統一的android?
- 16. 如何檢查是在一個文件
- 17. 如何檢查一個文件是否保存?
- 18. 檢查一個文件是否從另一個進程打開
- 19. 如何檢查一個查詢是否存在多個值
- 20. 如何檢查一個文件是否是一個帶有PHP的bash文件?
- 21. 檢查一個文件的鏈接是否是一個文本
- 22. 檢查URL文件是否存在
- 23. 檢查一個文件是否包含另一個文件
- 24. 如何檢查一個html控件是否存在?
- 25. 檢查一個URI是否存在?
- 26. jsoup檢查一個表是否存在
- 27. 檢查一個元素是否存在
- 28. 檢查一個類是否存在
- 29. 如何檢查一個目錄中是否存在多個文件
- 30. 如何檢查一個Activity的多個實例是否存在
爲什麼不行??? – JellyBelly
你可以使用這個函數getimagesize(「url」); 。 Ref:http://php.net/manual/en/function.getimagesize.php – InventorX