Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php FTP连接太多,可能';我不能接受更多_Php_Server_Ftp_Ftp Client - Fatal编程技术网

Php FTP连接太多,可能';我不能接受更多

Php FTP连接太多,可能';我不能接受更多,php,server,ftp,ftp-client,Php,Server,Ftp,Ftp Client,我收到以下错误消息: 警告:ftp\u login():在第58行的C:\xampp\htdocs\test\ftp\u sync.php中,同一用户不能接受超过6个连接 导致错误的我的代码: function newStream($i){ $conId = ftp_connect($this->ftpServer); // login with username and password $login_result = ftp_login

我收到以下错误消息:

警告:ftp\u login():在第58行的C:\xampp\htdocs\test\ftp\u sync.php中,同一用户不能接受超过6个连接

导致错误的我的代码:

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同一用户最多只能接受[0-9]+个连接

421来自此IP的连接太多([0-9]+

主要用于此类错误的FTP错误代码是
421
。定义如下:

421服务不可用,正在关闭控制连接。这可能是一个错误 如果服务知道必须关闭,则回复任何命令

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

  • 减少程序的连接量
  • 增加到服务器的允许FTP连接数
  • 如果允许的最大值低于3,则应首先尝试更改服务器上的配置文件,因为大多数程序至少需要3个,有时需要2个

    1.减少连接的数量 在程序中遇到问题时:某些FTP客户端允许用户在设置中更改已使用连接的数量。它们大多同时使用大约3个连接,2个用于提高性能,1个用于在用户执行其他任务时启用浏览。如果您在执行其他任务时不必费心浏览,您可以在不丢失任何重要功能的情况下将数量减少到2甚至1。()

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

    2.增加允许的连接数 这取决于您使用的FTP服务器类型。在(大多数UNIX系统使用)中,您需要更改
    /etc/pure ftpd.conf
    中的
    MaxClientsPerIP
    设置。默认配置文件或托管公司的大多数管理员设置的默认数量大约为5-15。增加价值,直到它满足您的需要请注意理论上,位于most用户和FTP服务器之间的代理服务器可能会导致问题,因为most连接将使用相同的IP地址



    在您的特殊情况下:如前所述,您没有关闭代码中的连接。这很容易导致多个连接处于活动状态,尤其是在短时间内多次运行代码时。因此,在您的特定情况下,添加
    ftp\u close($conId)修复问题。(同时使用try-catch块。)

    确保在完成连接后关闭连接:
    ftp\u close($conId)