我在我的PHP網頁中顯示了大量的遠程圖像,我需要檢查圖像是否存在,以便處理沒有圖像條件。但是這個過程需要很大的負載來檢查每個遠程文件的條件。請任何人建議你的意見來處理這個問題。如何在php中檢查是否存在大量的遠程圖像
在此先感謝。
我在我的PHP網頁中顯示了大量的遠程圖像,我需要檢查圖像是否存在,以便處理沒有圖像條件。但是這個過程需要很大的負載來檢查每個遠程文件的條件。請任何人建議你的意見來處理這個問題。如何在php中檢查是否存在大量的遠程圖像
在此先感謝。
而不是獲取整個文件,只是檢查請求遠程圖像是否返回HTTP狀態代碼200(找到)或其他東西(例如404找不到)。
嘗試這樣的回答:How can one check to see if a remote file exists using PHP?
您可以指示捲曲通過CURLOPT_NOBODY使用HTTP HEAD方法。
或多或少
$ch = curl_init("http://www.example.com/favicon.ico"); curl_setopt($ch, CURLOPT_NOBODY, true); curl_exec($ch); $retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // $retcode >= 400 -> not found, $retcode = 200, found. curl_close($ch);
我覺得有幾種解決方案
您最好將這些圖像複製到您的服務器上。如果你這樣做,你會確定圖像仍然存在,不會被修改。
我更喜歡javascript解決方案。通過使用JavaScript,用戶可以快速接收網頁並感覺更加快速。如果您仍想使用服務器端檢查,請確保您使用某種緩存... –
這樣的事情可能會奏效。
<script type="text/javascript">
//Example error handling
var imgPlaceHolder = '//example.com/no-img.jpg';
var handelImageNotFound = function (imgId) {
$('#' + imgId).attr("src", imgPlaceHolder);
}
</script>
<?php
$imgList = [
'//example.com/foo1.jpg',
'//example.com/foo2.jpg',
'//example.com/baz.jpg',
];
?>
<?php for ($index = 0; $index < count($imgList); $index++): ?>
<img src="<?= $imgList[$index] ?>" id="img_<?= $index ?>" onerror="handelImageNotFound('img_<?= $index ?>')" />
<?php endfor; ?>
現在你必須寫一個JavaScript方法「handelImageNotFound(imgId)
」的功能來處理圖像丟失。
使用file_exists()函數; – Saty
@saty:謝謝你的回覆。我的問題是我不能使用這些函數@GetImageSize()和file_exists()爲每個圖像。它增加了頁面上的負載。 – Ashok