山河博客

PHP实现ping api

大家好我是山河,今天给大家分享点技术,很多小伙伴问我怎么写php的ping api,我跟他们说用exec或者systerm函数来实现,但是他们说主机商不允许使用这两个函数,让我想想办法。

既然不能直接使用dos命令来搞ping,那我们只能模拟ping了。

话不多说,上效果图

嘿嘿,这样效果也差不多。

我们运用php的fsockopen函数来模拟 HTTP连接 实现ping的效果,但实际与ping差距是很大的,因为ping是ICMP协议,而我们是使用tcp或者udp协议。

话不多说,上代码,本代码的模拟ping是使用tcp协议 (HTTP/1.1 和 HTTP/2 都是基于 TCP 传输协议),

HTTP/3 是基于 UDP 传输协议

<?php
/*
    此模拟ping仅仅只是 使用 HTTP协议 模拟ping。不是真正的ping,与真正的 ping 误差很大。
*/
    // ping次数
    $num = 5;
    // 执行时间
    function times(){
        list($usec,$sec) = explode(" ",microtime());
        return ((float)$usec + (float)$sec); 
    }
    function demo($host,$port=80,$i) {
        if($i == 0) {
            echo 'Ping 域名 '.$host.'IP: ['.gethostbyname($host).'] 端口:'.$port.'<br />';
        } 
            echo ping($host,$port);
    }
    function ping($host,$port=80) {
        $starttime= times();
        $ip = gethostbyname($host);
        $fp = @fsockopen($host,$port);
        if(!$fp) {
            return 'ping超时!';
        } else {
            $get = "GET / HTTP/1.1\r\nHost:".$host."\r\nConnect:".$port."Close\r\n";
            fputs($fp,$get);
            fclose($fp);
            $nowtime = times();
            $time = $nowtime - $starttime;
            $time = ceil($time * 1000);
            return 'Ping from '.$ip.':'.$port.' time = '.$time.'ms<br />';
        }
    }
    for($i = 0;$i < $num;$i++){
        echo demo('blog.shanhe.info',80,$i);
        //每次运行中间间隔1S
        sleep(1);
        //刷新输出缓存
        ob_flush();
        flush();
    }

好了,我是山河,本文到此结束

山河博客

阿帕奇Apache的一些操作指令

大家好我是山河,我今天给大家总结一下关于阿帕奇 Apache的一些cmd操作指令哈

查看Apache服务的帮助:[ httpd -help ] 
重启Apache服务:[ httpd -k restart ]
查看Apache服务版本号:[ httpd -v ]
停止Apache服务:[ httpd -k stop ]
启动Apache服务:[ httpd -k start ]
查看使用的模块:[ httpd -M ]
启动httpd.exe [ httpd.exe ]
验证配置文件是否有效:[ httpd -t ] 

阿帕奇 Apache的基础指令就是这些,希望能帮助到大家。

阿帕奇下载地址 阿帕奇豪斯下载 (apachehaus.com)

域名不备案使用国内服务器方法

大家好我是山河,最近腾讯服务器打折力度很大啊,不少人都淘了好几台屯着,当然山河也没闲着,也搞了两台,但是有个问题,主域名用上了,给其他服务器用不合适,可是现在备案也要花10-20天的,中间这段时间服务器岂不是闲着了,怎么解决呢?

当然就是绕备案了,绕备案目前有两种方法,且听山河细细道来。

第一种:

(新版图片教程请点击此链接):域名绕过备案 – 山河技术分享 (shanhe.info)

裸81/82端口,什么叫裸81/82端口呢?我们网站啊是走80端口的,为HTTP(HyperText Transport Protocol)协议开发的,即为万维网(World Wide Web)协议,我们HTTP地址,就是所谓的网址,一般访问是xx.com:80的,但是我们只输入网址就行了,因为那些浏览器啊会自动给我们网址加上80端口,而国内服务器80端口是需要备案域名才能访问的,如果我们没备案就会被拦截,访问不了,所以我们可以裸81或者82端口。

81 82端口呢,是重定向端口,我们只需要服务器绑定域名的时候绑定 域名:81 或者 域名:82 就可以了。

域名解析IP的时候不需要加上端口,服务器绑定域名的时候则需要。

然后我们访问网站的时候需要 域名:81 / 域名:82 才行,这样就能实现绕端口了

当然,如果你们不想输入 81 82端口才能访问,我们也可以隐藏。

这就需要第二种方法了

第二种方法:

借助ssl来隐藏端口

我们搞完第一种了呢之后,申请一个ssl证书,(ssl证书有很多地方可以申请免费的,腾讯,宝塔等都可以)

然后呢,然后我就懒得讲了?

第二种方法请百度,打字太累。