2012-03-31 27 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

相關問題