Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果端口打开,则为ajax映像;如果端口未打开,则为备用映像_Php_Javascript_Jquery_Ajax - Fatal编程技术网

Php 如果端口打开,则为ajax映像;如果端口未打开,则为备用映像

Php 如果端口打开,则为ajax映像;如果端口未打开,则为备用映像,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,所以我正在尝试为我的网站创建一个自定义脚本,我正在考虑做一个状态脚本。现在我已经做了一些研究,但我已经放弃了我所拥有的,直到我能找到更好的工作 我目前正在使用fopen检查端口是否打开,但是它会大大降低页面加载时间,我想知道是否有一种方法可以通过jquery和ajax实现这一点。允许先加载页面,然后在端口打开时显示一个映像,在端口关闭或无法访问时显示另一个映像 我以前见过它,但我似乎找不到关于它的任何文档。加载页面,向页面发送ajax请求以检查它是否打开 $.getJSON('checkstat

所以我正在尝试为我的网站创建一个自定义脚本,我正在考虑做一个状态脚本。现在我已经做了一些研究,但我已经放弃了我所拥有的,直到我能找到更好的工作

我目前正在使用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'])));
$.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>