PHP中如何保存资源类型?

发布于 2022-09-01 22:51:59 字数 335 浏览 6 评论 0

目前在写一个小项目。本人只是一个前端工程师,现在临时写一个PHP脚本。
流程是前端发送数据到服务器,然后服务器通过socket通信发送数据到设备上,然后再依次从设备发送到前端。
目前数据交互功能已经完成。但是有一个数据是需要频繁从设备发送到前端的,
所以我们希望在 服务器和设备的通信是时刻保持畅通的,这样就能避免每次发送消息都要`socket_creat(),socket_connect()` 。
我起初的想法是将创建的$socket 用session保存起来。但是发现session是不能保存资源类型的。
所以在此想向各位大神请教一下,如何将资源类型保存下来,或者有什么好方法能避免每次发送消息都得创建socket。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

混浊又暗下来 2022-09-08 22:51:59

不能保存资源类型,资源类型只是一个引用,引用的对象没了你保存这个引用本身也没意义。
你的需求看得不是很明白,如果是要实现一个socket server可以使用开源方案(如Workerman, Swoole)或者自己写。
官方有个简单的例子参考一下:
http://php.net/manual/zh/sockets.examples.php

坏尐絯 2022-09-08 22:51:59

既然问题在于服务器端需要保持(注意并不是保存!)这个socket连接,解决你的问题只需要使用长连接的socket。
workerman和swoole的框架就是用的长连接
长连接和短连接的区别:
http://www.php.cn/php-weizijiaocheng-363026.html

相比短连接:
长连接的服务器端socket长连接主要加上了这四句:

set_time_limit(0);   //设置无超时
socket_set_option($socket,SOL_SOCKET,SOL_REUSEADDR,1);//对端口复用
socket_set_nonblock($socket);//设置无阻塞

socket_select();

然后设置心跳包保持连接就好~

客户端则多了掉线检验、收发心跳应答之类的功能~

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文