2012-03-31 29 views
1

我需要编写一个由脚本setInterval调用的PHP脚本(“ajaxrequest('ftp.php','context')”,1000);功能。 PHP脚本相当简单。这是一个ftp地址数组。它循环数组并检查每个在线或不在线的IP地址。PHP脚本什么检查ftp服务器在线?

下面是PHP脚本的代码示例:

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

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

我的问题是,我必须这样做,没有任何机会通过cron作业使用它,因为我们需要通过网页检查服务器在线或不在实时。但在这种情况下,某处存在内存泄漏,它真的很快消耗我的内存。

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

+0

改用fsockopen()。此外,这里是您的问题的相关答案http://stackoverflow.com/questions/2226374/test-if-port-open-and-forwarded-using-php – 2012-03-31 11:56:15

+0

感谢您的快速回复。 这是不幸的没有解决问题,这里是我是如何做到的: $ conn_id = fsockopen(“192.168.1.108”,21,$ errno,$ errstr,1)或死(“无法连接到服务器”); fclose($ conn_id); 仍然有内存问题,虽然它稍后启动,然后用ftp_connect()函数 – Wermerb 2012-03-31 12:06:15

+0

尝试在这里阅读http://php.net/manual/en/function.fsockopen.php – 2012-03-31 12:10:31

回答

1

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

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

我会向php发出ajax请求,以便从表中检索这些数据。

这将完成是允许异步执行的两大任务

  • 列出所有FTP的不响应
  • 更新用户使用FTP的列表中没有响应

而且,你的方法将不得不查找每个实例都不能正常工作的ftp列表,这将在多个请求发出时对服务器造成更大的压力。这样,将使资源饥饿执行一次,这将是适用于所有:d

希望这有助于...

编辑不知道这是否你不会忽略的cron困境,但不要更新

+0

非常感谢你这个想法看起来非常好我打算试试它。我想现在我明白为什么我的应用程序如此内存饥饿真的很感谢您的建议。 – Wermerb 2012-03-31 13:03:46

相关问题