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...
许多托管服务提供商会施加连接限制和/或连接速率限制(或类似方式)来应对 DDOS 攻击(或出于资源分配考虑)。
对于连接速率限制,它是:
他们还可能采用其他方法来限制每秒 PHP 调用/特定 PHP 方法调用的数量。
对于模板方法,每次调用
getimagesize
都是一个单独请求,因此可能会触发限制并导致连接被拒绝错误对于PHP方式,它被视为单个请求,因此它会成功通过。
我认为你只能通过与托管公司交谈来解决问题(但他们可能不会招待你,因为他们仍然需要解决可能的 DDOS 等),否则请坚持你的 PHP 解析图像记录的方式(或切换到另一家托管公司/使用专用服务器)