搜索

首页  >  问答  >  正文

smarty 模板中的 getimagefile() 随机工作

在照片库模板(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粉715274052P粉715274052450 天前573

全部回复(1)我来回复

  • P粉515066518

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

    许多托管服务提供商会施加连接限制和/或连接速率限制(或类似方式)来应对 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 解析图像记录的方式(或切换到另一家托管公司/使用专用服务器)

    回复
    0
  • 取消回复