smarty 模板中的 getimagefile() 隨機工作
P粉715274052
P粉715274052 2023-09-11 00:04:59
0
1
505

在照片庫範本(CMSMS)中,我使用以下程式碼:

<ul>
{foreach from=$images item=image}
{$imagesize=getimagesize($image->file)}
<li> name : {$image->file} <em>width :</em> {$imagesize[0]}- <em>height:</em> {$imagesize[1]} </li>
{/foreach}
</ul>

每次載入圖庫時,僅檢索一些圖像的尺寸(寬度和高度),有時是全部圖像。它是完全隨機的,不一定是相同的圖像。顯然我嘗試了來自不同來源的不同圖像。

我遇到開啟流失敗錯誤:連線被拒絕。 Ctrl F5 隨機給出

這是一個共享託管 (OVH)。

我在網站的根目錄創建了一個 php 檔案和一個圖片目錄(很多)。

<?php

function walkDir($path = null) {
    if(empty($path)) {
        $d = new DirectoryIterator('./testqdima');
    } else {
        $d = new DirectoryIterator($path);
    }

    foreach($d as $f) {
        if(
            $f->isFile() && 
            preg_match("/(\.gif|\.png|\.jpe?g)$/", $f->getFilename())
        ) {
            list($w, $h) = getimagesize($f->getPathname());
            echo "<p>".$f->getFilename() . " Dimensions: " . $w . ' ' . $h . "</p>";
        } elseif($f->isDir() && $f->getFilename() != '.' && $f->getFilename() != '..') {
            walkDir($f->getPathname());
        }
    }
}

walkDir();

?>

它工作得很好,所有圖像都已處理。

所以如果有人以前遇到過這個問題...

P粉715274052
P粉715274052

全部回覆(1)
P粉515066518

許多託管服務提供者會施加連線限制和/或連線速率限制(或類似方式)來應對 DDOS 攻擊(或出於資源分配考慮)。

對於連線速率限制,它是:

Connection Rate Limit: a number that specifies the number of 
new connections accepted per second for the virtual server.

他們也可能採用其他方法來限制每秒 PHP 呼叫/特定 PHP 方法呼叫的數量。

對於模板方法,每次呼叫getimagesize都是一個單獨請求,因此可能會觸發限制並導致連接被拒絕錯誤

對於PHP方式,它被視為單一請求,因此它會成功通過。

我認為你只能透過與託管公司交談來解決問題(但他們可能不會招待你,因為他們仍然需要解決可能的DDOS 等),否則請堅持你的PHP 解析圖像記錄的方式(或切換到另一家託管公司/使用專用伺服器)

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!