在照片库模板(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粉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 解析图像记录的方式(或切换到另一家托管公司/使用专用服务器)