【问题标题】:FTP-connections error after a while一段时间后 FTP 连接错误
【发布时间】:2014-01-24 03:53:53
【问题描述】:

我的文件通过 FTP 不断更新信息。在我的“index.php”(在另一个站点上)中,我有 3 个不同的 iframe。在这些 iframe 中的每一个中,都有一个 PHP 文件在定义的时间(例如每三秒)重新加载。现在这三个 PHP 文件分别打开一个到 FTP 的连接,在文件的开头,然后读取位于 FTP 上的文件中的内容。然后在文件末尾关闭 FTP 连接。

这很好,直到一段时间后错误代码开始弹出。

错误是:

ftp_login() 期望参数 1 是资源

我怀疑打开连接的最大数量已被覆盖,但由于我每次打开 FTP 连接时都关闭了它,这应该是不可能的吧?有人知道如何阻止这个“错误”吗?

其中一个 iframe 中的 php 文件之一的示例:

<script>
var myVar=setInterval(function(){myTimer()},1000)
function myTimer()
 {
location.reload();
}
</script>
<?php
$conn_id = ftp_connect($ftp_adress); 

// login with username and password
$login_result = ftp_login($conn_id, $username, $password); 

// check connection
if ((!$conn_id) || (!$login_result)) { 
  echo "FTP connection has failed!";
  exit; 
}else{
  echo "FTP connected";
}

//Collect contents from FTP
if(ftp_close($conn_id)){
 echo "FTP-closed";
}else{
 echo "FTP did not closed";
}
?>

【问题讨论】:

  • 每次重新加载都将是一个完全独立的 http 请求,从而导致调用一个新的 php 来运行您的 ftp 命令。除非您在服务器上发生了一些奇怪的事情,否则 php 脚本的结尾也应该是该脚本建立的 ftp 连接的结尾。
  • 这不是单独的http请求吗?因为它们在 iframe 中?
  • 是的。您将有 3 个 iframe 运行 3 个运行 3 个 php 脚本的 http 请求,总共有 3 个 ftp 连接。
  • 但这将创建三个打开的​​连接,它可以在开始时处理,所以我认为这不是问题(同时打开三个连接)。还是您有其他想法?
  • 你检查过ftp服务器是否有限速器吗?也许您不允许每 Y 分钟或其他任何时间登录超过 X 次。

标签: php iframe ftp


【解决方案1】:

如果您不只是说the error code starts to pop-up 而是告诉我们显示的错误什么,那将会有所帮助。在失败时打印$login_result 也可能会有所帮助。也就是说,许多 FTP 服务器通过限制同一 IP 或同一用户在给定时间内连接的频率来防止 DOS 攻击。如果您平均每秒登录 1 次,您很可能会触发此操作。

【讨论】:

  • 是的,我忘记发布错误代码抱歉,错误代码是“ftp_login() 期望参数 1 是资源”。但有时错误会弹出然后消失。
  • 我现在查了一下,好像没有同一个IP的限制。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
相关资源
最近更新 更多