getimagefile() dans le modèle smarty fonctionne de manière aléatoire
P粉715274052
P粉715274052 2023-09-11 00:04:59
0
1
568

Dans le modèle de galerie photo (CMSMS) j'utilise le code suivant :

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

Chaque fois que la galerie est chargée, les dimensions (largeur et hauteur) de certaines images seulement sont récupérées, parfois toutes. C'est complètement aléatoire et pas forcément la même image. Évidemment, j'ai essayé différentes images provenant de différentes sources.

Je reçois une erreur d'échec d'Open Stream : connexion refusée. Ctrl+F5 donne au hasard

Il s'agit d'un hébergement mutualisé (OVH).

J'ai créé un fichier php et un répertoire d'images (beaucoup d'entre eux) à la racine du site.

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

?>

Cela fonctionne très bien et toutes les images sont traitées.

Donc, si quelqu'un a déjà rencontré ce problème...

P粉715274052
P粉715274052

répondre à tous(1)
P粉515066518

De nombreux hébergeurs imposent des limites de connexion et/ou des limites de débit de connexion (ou similaires) pour lutter contre les attaques DDOS (ou pour des raisons d'allocation de ressources).

Pour la limitation du débit de connexion, c'est :

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

Ils peuvent également utiliser d'autres méthodes pour limiter le nombre d'appels PHP/appels de méthodes PHP spécifiques par seconde.

Pour les méthodes modèles, chaque appel getimagesize est une demande distincte, elle peut donc déclencher une limitation et entraîner une erreur de refus de connexion

Pour la méthode PHP, elle est traitée comme une requête unique, elle sera donc réussie.

Je pense que vous ne pouvez résoudre le problème qu'en discutant avec la société d'hébergement (mais elle ne vous divertira peut-être pas car elle doit encore résoudre d'éventuels DDOS, etc.), sinon respectez la façon dont votre PHP analyse les enregistrements d'images (ou passez à un autre hébergement A. entreprise / utilisant un serveur dédié)

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal