Maison  >  Questions et réponses  >  le corps du texte

getimagefile() dans le modèle smarty fonctionne de manière aléatoire

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粉715274052P粉715274052425 Il y a quelques jours553

répondre à tous(1)je répondrai

  • P粉515066518

    P粉5150665182023-09-11 11:29:41

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

    répondre
    0
  • Annulerrépondre