所以我正在尝试为我的网站创建一个自定义脚本,我正在考虑做一个状态脚本。现在我已经做了一些研究,但是我已经放弃了我所拥有的东西,直到找到更好的东西。
我目前正在使用 fopen 来检查端口是否打开,但是它会大大减慢页面加载时间,我想知道是否有办法做到这一点是 jquery 和 ajax。允许页面首先加载,然后在端口打开时显示图像,如果端口关闭或无法访问,则显示备用图像。
我以前看过它,我似乎找不到任何关于此的文档。
所以我正在尝试为我的网站创建一个自定义脚本,我正在考虑做一个状态脚本。现在我已经做了一些研究,但是我已经放弃了我所拥有的东西,直到找到更好的东西。
我目前正在使用 fopen 来检查端口是否打开,但是它会大大减慢页面加载时间,我想知道是否有办法做到这一点是 jquery 和 ajax。允许页面首先加载,然后在端口打开时显示图像,如果端口关闭或无法访问,则显示备用图像。
我以前看过它,我似乎找不到任何关于此的文档。
加载页面,向您的页面发送 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。