2012-03-31 7 views
1

私は、setInterval( "ajaxrequest( 'ftp.php'、 'context')"、1000)によって呼び出されるPHPスクリプトを書く必要があります。関数。 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); 

だから、基本的に、ここで何が起こるか:我々は、ftpサーバがオンラインかどうかであることを確認するために毎秒PHPスクリプトを呼び出すJavaScriptを持っています。 PHPスクリプトでは、「サーバーに接続できません」という書き込みができない場合に接続を試み、接続を閉じます。

私の問題は、サーバーがオンラインであるかどうかをリアルタイムで確認する必要があるため、私はこのようにしなければならず、cronジョブで使用する機会がないということです。しかし、このようにどこかにメモリリークがあると、私の記憶は本当に速く食べられます。

私はメモリを解放したり、この問題を別の方法で解決できる方法はありますか?

+0

代わりにfsockopen()を使用してください。また、ここにあなたの質問の関連答えです。http://stackoverflow.com/questions/2226374/test-if-port-open-and-forwarded-using-php –

+0

あなたの迅速な対応に感謝します。 ここで問題を解決していないのはうれしいです。 $ conn_id = fsockopen( "192.168.1.108"、21、$ errno、$ errstr、1)またはdie( "サーバーに接続できません"); fclose($ conn_id); まだメモリの問題がありますが、少し遅れてftp_connect()関数で開始します – Wermerb

+0

ここで読んでみてくださいhttp://php.net/manual/en/function.fsockopen.php –

答えて

1

この回答を参考にして、とすると、私はそのようなことをする必要はありませんでしたが、私はそれに直面していました。

私はcronを書いて、ftpポートをipでスキャンします。このcronは毎分1回実行されます。応答していないftpはdbに保存されます。

私はajaxリクエストを作成して、それらのデータをテーブルから取得するだけです。これが何をするか

非同期

  • 一覧また

を応答していないのftpのリストを

  • 更新をユーザーに応答しないすべてのFTPの2つの主要なタスクを実行することが可能である、あなたの方法すべてのインスタンスで動作していないftpのリストを見つける必要があります。これにより、複数のリクエストが行われたときにサーバーにさらに大きな負担がかかります。すべてのために有効になります一度リソース空腹の実行を行います。この方法で、:D

    希望このことができます...

    EDITこれはあなたのcronジレンマを住所が、しかし、更新しなければわからない

  • +0

    これは本当にいいアイデアだとありがとう私はそれを試してみるつもりです。私は今なぜ私のアプリはあなたのアドバイスのために本当に感謝している空腹のメモリであることを理解すると思います。 – Wermerb

    関連する問題