getimagefile() in der Smarty-Vorlage funktioniert zufällig
P粉715274052
P粉715274052 2023-09-11 00:04:59
0
1
570

In der Fotogalerie-Vorlage (CMSMS) verwende ich folgenden Code:

<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>

Jedes Mal, wenn die Galerie geladen wird, werden nur die Abmessungen (Breite und Höhe) einiger Bilder abgerufen, manchmal sogar aller. Es ist völlig zufällig und nicht unbedingt das gleiche Bild. Offensichtlich habe ich verschiedene Bilder aus verschiedenen Quellen ausprobiert.

Ich erhalte die Fehlermeldung „Open Stream fehlgeschlagen: Verbindung abgelehnt“. Strg+F5 ergibt zufällig

Dies ist ein Shared Hosting (OVH).

Ich habe im Stammverzeichnis der Website eine PHP-Datei und ein Bilderverzeichnis (viele davon) erstellt.

<?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();

?>

Es funktioniert großartig und alle Bilder werden verarbeitet.

Falls also jemand schon einmal auf dieses Problem gestoßen ist...

P粉715274052
P粉715274052

Antworte allen(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 解析图像记录的方式(或切换到另一家托管公司/使用专用服务器)

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage