• 记一次socket_create()函数耗时异常记录


    背景:

         下午开发时突然整个页面耗时增加,空接口每次都需要2-3秒的耗时,一开始以为连开发环境数据库出现问题,最后断开数据库跑,发现还是很慢

    最终逐步调试此页面耗时,定位到了socket_create()此函数上面,这个函数主要用在发送udp监控日志,但是创建socket连接时socket_create()的第三个参数出现了问题

    改过后的方式:

    $sock = socket_create(AF_INET, SOCK_DGRAM, 1);

    先看下php官网的解释此函数的
    http://www.php.net/manual/zh/function.socket-create.php

    socket_create
    
    (PHP 4 >= 4.1.0, PHP 5, PHP 7)
    
    socket_create — 创建一个套接字(通讯节点)
    
    说明 ¶
    
    resource socket_create ( int $domain , int $type , int $protocol )
    创建并返回一个套接字,也称作一个通讯节点。一个典型的网络连接由 2 个套接字构成,一个运行在客户端,另一个运行在服务器端。

    $domain =  AF_INET ; //AF_INET IPv4 网络协议。TCP 和 UDP 都可使用此协议。

    $type = SOCK_DGRAM ; //提供数据报文的支持。(无连接,不可靠、固定最大长度).UDP协议即基于这种数据报文套接字。

    protocol 参数,是设置指定 domain 套接字下的具体协议。这个值可以使用 getprotobyname() 函数进行读取。如果所需的协议是 TCP 或 UDP,可以直接使用常量 SOL_TCP 和 SOL_UDP 。

     

    之前协议$protocol一直填的是0,直到今天目标机器关机以后,一直连不上,改了一下协议为SOL_UDP ,耗时恢复正常

    下附代码:

         /**     * 发送udp数据

         * @param type $input 发送的数据
         * @param type $server 发送的服务器
         * @param type $port 发送的端口
         * @return boolean      发送成功与否
         */
        static function UdpSend($input, $server = "test1.mopon.cn", $port = 8125)
        {
            try {
                //创建一个socket
                //$sock = socket_create(AF_INET, SOCK_DGRAM, 1);
            $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);

    //发送数据到这个socket socket_sendto($sock, $input, strlen($input), 0, $server, $port); //关闭创建的socket socket_close($sock); //返回 return true; } catch (Exception $e) { $errorCode = socket_last_error(); $errorMsg = socket_strerror($errorCode); Log::error("Could not send data: [$errorCode] $errorMsg "); return false; } }

     

     

  • 相关阅读:
    Maven命名约定
    8.30面试
    8.28面试
    8.27面试总结
    vue引入图片之require()
    使用pxtorem时遇到PostCSS plugin postcss-pxtorem requires PostCSS 8
    vue之Missing required prop: "id"
    git首次使用
    vue中style的scoped属性
    JavaScript中的this与function中的this
  • 原文地址:https://www.cnblogs.com/liugx/p/7252385.html
Copyright © 2020-2023  润新知