1

だから私は自分のウェブサイト用のカスタムスクリプトを作成しようとしています.ステータススクリプトを実行しようとしています. 今、私はいくつかの調査を行いましたが、よりうまく機能するものが見つかるまで、私が持っているものを廃棄しました.

現在、ポートが開いているかどうかを確認するために fopen を使用していますが、ページの読み込み時間が大幅に遅くなります。jquery と ajax でこれを行う方法があるかどうか疑問に思っていました。最初にページの読み込みを許可し、ポートが開いている場合は画像を表示し、ポートが閉じているかアクセスできない場合は別の画像を表示します。

以前にそれが行われたのを見たことがありますが、これに関するドキュメントが見つからないようです。

4

1 に答える 1

0

ページをロードし、ページに ajax リクエストを送信して、ページが開いているかどうかを確認します。

$.getJSON('checkstatus.php', {
    port: 8070
}, function (data) {
    if (data.status === 'on') {
        $('#img').attr('src', 'on.png');
    } else {
        $('#img').attr('src', 'off.png');
    }
});

<?php
......code.....

header('content-type: application/json');
echo json_encode(array('status'=>get_port_status($_GET['port'])));

編集 :

//checkstatus.php
<?php
$host = $_GET['host'];
$ports = array(PORT 1, PORT 2, PORT 3, PORT 4, PORT 5, PORT 6, PORT 7, PORT 8, PORT 9);
$status = array();
foreach($ports as $port) {
    $connection = @fsockopen($host, $port);
    if (is_resource($connection)) {
        $[$port] = 'on';
        fclose($connection);
    } else {
        $[$port] = 'off';
    }
}

header('content-type: application/json');
echo json_encode($status);
?>

///status.html
<table id="portStatus">
   <tbody></tbody>
</table>

<script>
$(function () {
    var table = $('#portStatus tbody');
    var hosts = ['host1.com', 'host2.com'];
    for (var i = 0; i < hosts.length; ++i) {
        var host = hosts[i];
        $.getJSON('checkstatus.php', {
            host: host
        }, function (data) {
            var tr = $('<tr/>');
            tr.append($('td').html(host)); //this appends the hostname to the td;
            for (var port in data) {
                tr.append($('<td><img src="' + (data[port] === 'on' ? 'accept.png' : 'error.png') + '"></td>');
                }
                table.append(tr);
            });
        }
    });
</script>

これで基本的なアイデアが得られるはずです。試してみて、修正してください。なお、javascript 部分は jQuery を使用しています。

于 2013-09-01T02:57:34.237 に答える