记一次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 \n"); return false;
} }
记一次socket_create()函数耗时异常记录的更多相关文章
- PHP的日志记录-错误与异常记录
PHP的日志记录-错误与异常记录 提到 Nginx + PHP 服务的错误日志,我们通常能想到的有 Nginx 的 access 日志.error 日志以及 PHP 的 error 日志.虽然看起来是 ...
- 运用Unity实现AOP拦截器[结合异常记录实例]
本篇文章将通过Unity实现Aop异常记录功能:有关Unity依赖注入可以看前两篇文章: 1:运用Unity实现依赖注入[结合简单三层实例] 2:运用Unity实现依赖注入[有参构造注入] 另早期 ...
- Spark踩坑填坑-聚合函数-序列化异常
Spark踩坑填坑-聚合函数-序列化异常 一.Spark聚合函数特殊场景 二.spark sql group by 三.Spark Caused by: java.io.NotSerializable ...
- Selenium碰到的异常记录
.markdown-preview:not([data-use-github-style]) { padding: 2em; font-size: 1.2em; color: rgb(171, 178 ...
- 微信小程序开发——使用回调函数出现异常:TypeError: Cannot read property 'setData' of undefined
关键技术点: 作用域问题——回调函数中的作用域已经脱离了调用函数了,因此需要在回调函数外边把this赋给一个新的变量才可以了. 业务需求: 微信小程序开发,业务逻辑需要,需要把获取手机号码的业务逻辑作 ...
- Expo大作战(十七)--expo结合哨兵(sentry)进行错误异常记录
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- C++解析-外传篇(2):函数的异常规格说明
0.目录 1.异常规格说明 2.unexpected() 函数 3.小结 1.异常规格说明 问题: 如何判断一个函数是否会抛出异常,以及抛出哪些异常? C++提供语法用于声明函数所抛出的异常 异常声明 ...
- php MySQL使用rand函数随机取记录(转)
php MySQL使用rand函数随机取记录 如何在mysql中使用随机数, 如何写一个语句能一下更新几百条MYSQL数据! 需要测试MYSQL数据库,里面有一个上万条数据的数据库,如何写一个PHP文 ...
- 自定义UDF函数应用异常
自定义UDF函数应用异常 版权声明:本文为yunshuxueyuan原创文章.如需转载请标明出处: http://www.cnblogs.com/sxt-zkys/QQ技术交流群:299142667 ...
随机推荐
- 009-对象—— 构造方法__construct析构方法__destruct使用方法 PHP重写与重载
<?php /**构造方法__construct析构方法__destruct使用方法 PHP重写与重载 */ //构造方法:当实例化对象时,自动运行的方法 /*class channel{ fu ...
- C# 设计模式巩固 - 抽象工厂模式
前言 继续工厂模式高级版,抽象工厂模式.抽象工厂模式其实是从工厂方法模式拓展而来.在实际的生活中一个工厂的产品不可能是单一的,肯定是多种系列的产品. 介绍 - 抽象工厂模式 定义:(摘自百度百科~ ...
- bat文件执行cmd命令 进入文件夹不退出
@echo offe:cd E:\ChanJoy-ChangJianBao\前端部分\chanjoy\ChanjoyWebfontgulp watchcmd /k
- kappa系数在大数据评测中的应用
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/7091315.html 前言 最近打算把翻译质量的人工评测好 ...
- CMDB开发(需求分析)
浅谈ITIL TIL即IT基础架构库(Information Technology Infrastructure Library, ITIL,信息技术基础架构库)由英国政府部门CCTA(Central ...
- 【实用工具】google访问不了比较好的解决办法
一.直接添加ip,74.125.128.(31~167)都可以,不过不稳定 二.不使用.hk的后缀名,使用.tw,co.jp等均可(同IE用户) 三.下载这个脚本,进行安装(右上角点击“install ...
- LINUX系统下CIFS文件系统
一.什么是CIFS CIFS(Common Internet File System)文件系统,也叫通用网络文件系统:它可以使一台主机访问远程主机上共享出去的文件.CIFS使用的C/S模式(客户 ...
- 获取img元素图片的实际尺寸
// Get on screen image var screenImage = $("#image"); // Create new offscreen image to tes ...
- Html5的Web存储和WebSql
HTML5 Web 存储 使用HTML5可以在本地存储用户的浏览数据. 早些时候,本地存储使用的是cookies.但是Web 存储需要更加的安全与快速. 这些数据不会被保存在服务器上,但是这些数据只用 ...
- PostgreSQL日志号LSN和wal日志文件简记
弄明白日志号的原理之后,一段时间又有点忘记了,干脆整理一遍: (一)wal文件命名规则 1)在$PGDATA目录下面的pg_xlog目录中存放着xlog日志文件(10.1之后变为了pg_wal): t ...