【问题标题】:PHP script what checks ftp servers are online?PHP脚本检查ftp服务器是否在线?
【发布时间】:2012-03-31 11:53:04
【问题描述】:

我需要编写一个由 setInterval("ajaxrequest('ftp.php', 'context')", 1000); 调用的 php 脚本功能。 php 脚本相当简单。它是一个 ftp 地址数组。它循环阵列并检查每个在线或不在线的IP地址。

这是一个php脚本的示例代码:

$conn_id = ftp_connect("192.168.1.108",21,1) or die ("Cannot connect to the server");
ftp_close($conn_id);

所以基本上这里发生了什么:我们有一个 javascript,它每秒调用一个 php 脚本来检查 ftp 服务器是否在线。在 PHP 脚本中尝试连接,如果它不能写出“无法连接到服务器”,那么它会关闭连接。

我的问题是我必须这样做,没有机会通过 cron 作业使用它,因为我们需要通过网页检查服务器是否实时在线。但是以这种方式,某处存在内存泄漏,它真的很快吞噬了我的记忆。

有什么方法可以释放内存或以其他方式解决此问题?

【问题讨论】:

  • 使用 fsockopen() 代替。另外,这里是您的问题的相关答案stackoverflow.com/questions/2226374/…
  • 感谢您的快速回复。不幸的是,这里没有解决问题是我如何做到的: $conn_id = fsockopen("192.168.1.108", 21, $errno, $errstr, 1) 或 die ("Cannot connect to the server"); fclose($conn_id);并且仍然存在内存问题,尽管它开始稍晚一点,然后使用 ftp_connect() 函数
  • 内存问题可能与在许多 IP 上每秒请求检查有关。这已经结束了,为什么每一秒? FTP 服务器几乎 99.9% 的时间都在线,您检查了多少 IP?
  • 所以它基本上可以是10 - 200范围内的任何服务器。1秒因为他们想实时查看服务器是否有任何问题。

标签: php javascript ajax


【解决方案1】:

认为这个答案是一个建议和方向,我从来不需要做这样的事情,但如果我穿着它来面对它。

我会写一个 cron,它会通过 ip 扫描 ftp 端口。此 cron 将每分钟运行一次。没有响应的 ftp 将保存在 db 中。

我会向 php 发出 ajax 请求,只是为了从表中检索这些数据。

这将允许异步执行两个主要任务

  • 列出所有没有响应的 ftp
  • 用不响应的 ftp 列表更新用户

此外,您的方法必须找出并非对每个实例都有效的 ftp 列表,当发出多个请求时,这会给服务器带来更大的压力。这种方式将使资源饥渴的执行一次,这对所有人都有效:D

希望这会有所帮助...

编辑不确定这是否解决了您的 cron 困境,但请更新

【讨论】:

  • 非常感谢,这个想法看起来非常好,我会尝试一下。我想现在我明白了为什么我的应用程序如此需要内存非常感谢您的建议。
猜你喜欢
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
  • 1970-01-01
  • 2021-11-19
  • 2011-07-10
  • 1970-01-01
相关资源
最近更新 更多