加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – FTP连接太多,无法接受更多

发布时间:2021-07-06 05:22:23 所属栏目:大数据 来源: https://www.jb51.cc
导读:我收到以下错误消息: Warning: ftp_login(): I can’t accept more than 6 connections as the same user in C:xampphtdocstestftp_sync.PHP on line 58 导致错误的代码: function newStream($i){ $conId = ftp_connect($this-ftpServer); // login wi

我收到以下错误消息:

Warning: ftp_login(): I can’t accept more than 6 connections as the same user in C:xampphtdocstestftp_sync.PHP on line 58

导致错误的代码:

function newStream($i){
        $conId = ftp_connect($this->ftpServer);

        // login with username and password
        $login_result = ftp_login($conId, $this->ftpUsername, $this->ftpPassword);//line 58
        // /home/content/61/10367861/html/

        // turn passive mode on
        ftp_pasv($conId, true);

        $this->conIds[$i]=$conId;
        $this->localFiles[$i]='';
        $this->conStats[$i]=FTP_Failed;//initial value
    }

有谁可能知道这个错误信息是什么意思?

解决方法:

抛出此错误是因为您的服务器限制了每个用户/ IP地址的最大连接数.大多数人遇到的错误大多是这样的:

421 I can’t accept more than [0-9]+ connections as the same user

421 Too many connections ([0-9]+) from this IP

主要用于此类错误的FTP错误代码是421.在RFC 959 (FTP)中定义为:

421 Service not available, closing control connection. This may be a
reply to any command if the service knows it must shut down.

您现在有两种可能的解决方案来解决此问题:

>减少程序的连接数量.
>增加与服务器的允许FTP连接数量.

如果允许的最大值低于3,那么您应首先尝试更改服务器上的配置文件,因为大多数程序至少需要3个,有时需要2个.

1.减少连接数量

在程序中遇到问题时:某些FTP客户端允许用户更改设置中使用的连接数.它们大多数同时使用大约3个连接,2个用于提高性能,1用于在用户执行其他任务时启用浏览.如果您在执行其他任务时不打扰浏览,则可以减少数量而不会丢失任何重要功能,而不会丢失2或甚至1. (FileZilla for example allow this.)

在您自己的代码中遇到问题时:减少同时执行的任务量.检查您的代码是否以正确的方式关闭连接,以及抛出错误时.无论发生什么,它都应该一直关闭.在PHP中,您可以使用try-catch-blocks,在类中,您可以将用于关闭连接的代码放入__destruct method.

2.增加允许的连接数量

这取决于您使用的FTP服务器类型.在PureFTP(由大多数UNIX系统使用),您需要更改/etc/pure-ftpd.conf中的MaxClientsPerIP设置.默认配置文件或托管公司的大多数管理员设置的默认金额大约为5-15.增加价值直至满足您的需求.请注意,理论上,位于大多数用户和FTP服务器之间的代理服务器可能会造成麻烦,因为大多数连接将使用相同的IP地址.

在您的特殊情况下:如上所述Mave,您没有关闭代码中的连接.这很容易导致多个连接处于活动状态,尤其是如果您在短时间内多次运行代码时.所以,在你的具体情况下会添加ftp_close($conId);解决问题. (也可以使用try-catch-block.)

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读