Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
509 views
in Technique[技术] by (71.8m points)

stream_socket_client()创建的连接资源,如果不使用主动关闭会自动释放吗?

先看代码如下

// 建立socket连接到内部推送端口
$wm_client = stream_socket_client('tcp://127.0.0.1:5678', $errno, $errmsg, 1);

// 推送的数据
$data = $arr_get;

// 发送数据,
fwrite($wm_client, json_encode($data)."
");

// 读取推送结果
echo fread($wm_client, 8192);

stream_set_timeout($wm_client, 2);  //这个timeout 和 stream_socket_client()的参数timeout 区别是什么??

stream_socket_shutdown($wm_client, STREAM_SHUT_RDWR);  //这样就算是关闭了连接,释放内存资源了吗?

问题一:stream_set_timeout($wm_client, 2); //这个timeout 和 stream_socket_client()的参数timeout 区别是什么??

问题二: stream_socket_shutdown($wm_client, STREAM_SHUT_RDWR); //这样就算是关闭了连接,释放内存资源了吗?

问题三:如果注释 stream_socket_shutdown()这一行,stream_socket_client()创建的连接 同样会关闭 且对应内存资源也会释放,因为php是执行完就释放内存的,对吗?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

一个是建立连接超时,一个是响应超时. 关闭后,这个socket resource释放. 如果你是PHPfpm的话,你不关闭,他执行完了也会释放所有资源,你要是写守候进程的话还是要主动释放掉


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
...