Php 如果端口打开,则为ajax映像;如果端口未打开,则为备用映像
所以我正在尝试为我的网站创建一个自定义脚本,我正在考虑做一个状态脚本。现在我已经做了一些研究,但我已经放弃了我所拥有的,直到我能找到更好的工作 我目前正在使用fopen检查端口是否打开,但是它会大大降低页面加载时间,我想知道是否有一种方法可以通过jquery和ajax实现这一点。允许先加载页面,然后在端口打开时显示一个映像,在端口关闭或无法访问时显示另一个映像Php 如果端口打开,则为ajax映像;如果端口未打开,则为备用映像,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,所以我正在尝试为我的网站创建一个自定义脚本,我正在考虑做一个状态脚本。现在我已经做了一些研究,但我已经放弃了我所拥有的,直到我能找到更好的工作 我目前正在使用fopen检查端口是否打开,但是它会大大降低页面加载时间,我想知道是否有一种方法可以通过jquery和ajax实现这一点。允许先加载页面,然后在端口打开时显示一个映像,在端口关闭或无法访问时显示另一个映像 我以前见过它,但我似乎找不到关于它的任何文档。加载页面,向页面发送ajax请求以检查它是否打开 $.getJSON('checkstat
我以前见过它,但我似乎找不到关于它的任何文档。加载页面,向页面发送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'])));
$.getJSON('checkstatus.php'{
端口:8070
},函数(数据){
如果(data.status==='on'){
$('#img').attr('src','on.png');
}否则{
$('#img').attr('src','off.png');
}
});
///status.html
$(函数(){
变量表=$(“#端口状态tbody”);
var hosts=['host1.com','host2.com'];
对于(变量i=0;i
这应该给你一个基本的想法,尝试一下并修改它。
注意,javascript部分使用jQuery。如果端口是动态的,这意味着在另一个代码中指定,我将如何在fpassthru中反映这一点(fopen(是否打开?'on.png':'off.png','rb'));没有理由让PHP为图像服务,负载更大。最好对脚本进行AJAX调用,以检查端口是否打开。如果打开,则显示图像。您的方式也不会减少浏览器认为页面“加载”的时间。我当前的代码是:$host='server.url';$ports=array(XX,XX,XX,XX,XX,XX,XX,XX)?>好的,您需要在原始帖子中显示更多代码或将其粘贴到某个地方。非常感谢,我可以使用此代码并将其设置为我自己的。我感谢大家的帮助!请将有问题的代码添加到您的问题中。
//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>