smarty 模板中的 getimagefile() 随机工作
P粉715274052
P粉715274052 2023-09-11 00:04:59
0
1
506

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!