1

いくつかのサーバーのステータスを確認し、それらが稼働しているか停止しているかをページに表示したいと考えています。現在、PHPのfsockopen()関数でこれを行っています。この関数の一部として、タイムアウト時間を決定します。これは、サーバーがダウンしている場合、次に進む前に、たとえば 2 秒間ブロックされることを意味します。fsockopen()これにより、私の Web ページは、ページを表示する前に s が完了するまで待機します。

これらのfsockopen()関数をページのレンダリングとは別に実行し、決定後に結果を含める方法はありますか? PHPである必要はないと思います。

4

3 に答える 3

1

これを 2 つのサブ問題に分割します。

1) cron ジョブを作成 (またはその他の方法でスケジュール) して、サーバーの状態をチェックし、その結果をどこかに保存するスクリプト (データベース、キャッシュ、ファイル、ポストイットなど) を作成します。好きなだけ実行してください。

2) ページのレンダリング中または AJAX 呼び出しを介して発生するクエリ。

于 2013-05-07T13:58:11.877 に答える
0

チェックするサーバーを知るために変数を受け入れるphpページを作成します

<?php
$server = isset($_GET['server']) ? $_GET['server'] : '';
$upordown = 'invalid server'; //default incase wrong variable is set

switch ($server) {
  case 'server1':
    //check server 1; EG: $upordown = checkserver('http://www.example.com');
    break;
  case 'server2':
    //check server 2;
    break;
  case 'server3':
    //check server 3;
    break;
}

echo $upordown
?>

jqueryを使用してショーページで:

<html>
<head>
  <script src='jquery.js'></script>
  <script>
  $(function(){
    $('.serverstatus').each(function() {
      var id = $(this).data('serverid');
      $(this).load('/servercheck.php?server='+id);
    });
  });
  </script>
</head>
<body>
  <div class='serverstatus' data-serverid='server1'>loading</div>
  <div class='serverstatus' data-serverid='server2'>loading</div>
  <div class='serverstatus' data-serverid='server3'>loading</div>
</body>
</html>

1,2,3 の代わりにキャッシングやランダムなサーバー名などの追加の安全性を追加できるようになりました

于 2013-05-07T14:03:13.743 に答える
0

AJAX を使用します。jQuery の $.ajax 関数 ( http://api.jquery.com/jQuery.ajax/ ) を使用して、サーバーにクエリを実行する PHP スクリプトを呼び出すことをお勧めします。ajax 呼び出しが終了したときに実行される成功関数を ajax 呼び出しに提供します。

于 2013-05-07T13:59:10.023 に答える