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

时间:2015-06-12 07:09:45

标签: php server ftp ftp-client

我收到以下错误消息:

  

警告: ftp_login():我不能在第58行的C:\ xampp \ htdocs \ test \ ftp_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
    }

是否有人可能知道此错误消息的含义?

1 个答案:

答案 0 :(得分:0)

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

  

421 我不能接受超过 [0-9] + 的连接作为同一个用户

     

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

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

  

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

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

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

    1。减少连接数

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

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

    2。增加允许的连接数量

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

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