欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php如何实现主动发送消息到终端

程序员文章站 2022-06-05 17:48:13
...
现在有一个这样的应用场景,有一个php做后台的信息发布系统控制端,用来控制户外的信息发布终端(广告机,户外显示屏等),当客户在浏览器页面上点击重启,开关机时或做其他操作,我如何将这个信息主动发送给终端呀?
看了一些推送的办法,还是云里雾里,很多还是要终端先发送请求才可以,哪位大侠能指点一下吗?


回复讨论(解决方案)

什么是终端,楼主你的要求有点变态,应该不是php能做到的吧,这应该已经是软件开发范畴了。

客户在浏览器页面上点击重启,开关机时或做其他操作,我如何将这个信息主动发送给终端呀?
这具体要看你的显示屏类型了,如果可以用SOCKET连接的,就用SOCKET连接

终端就是广告机,户外屏这些东西。
如果用http无法做到的话,倒是可以考虑用socket的,在php上用socket来主动发送信息要如何做呀?


客户在浏览器页面上点击重启,开关机时或做其他操作,我如何将这个信息主动发送给终端呀?
这具体要看你的显示屏类型了,如果可以用SOCKET连接的,就用SOCKET连接

这种需求用B/S模式明显是脑子不够用了。
首先有发布信息权限的肯定是极少数人,其次既然都是通过网络控制,那么直接做一个带授权功能的客户端直接对要控制的终端发送信息不就结了?根本不用做网页,还快捷简便。不要为了用PHP而用PHP,这么个用法永远也没有提高的可能,反而因为需求不好实现把自己搞得很狼狈。

终端就是广告机,户外屏这些东西。
如果用http无法做到的话,倒是可以考虑用socket的,在php上用socket来主动发送信息要如何做呀?


引用 2 楼 zhouzhipen 的回复:

客户在浏览器页面上点击重启,开关机时或做其他操作,我如何将这个信息主动发送给终端呀?
这具体要看你的显示屏类型了,如果可以用SOCKET连接的,就用SOCKET连接



对,这个就看你的"广告机,户外屏"这些是如何和你的php server联系的.

php里有socket库, 不过其它方式也很多,不一定需要

知道怎么用php做socket了。

谢谢你的回复,c/s的我们已经有了,我还不至于搞不清楚需求,4楼可能对我们的东西缺乏了解,你肯定的一些事恰恰不是那么回事。

这种需求用B/S模式明显是脑子不够用了。
首先有发布信息权限的肯定是极少数人,其次既然都是通过网络控制,那么直接做一个带授权功能的客户端直接对要控制的终端发送信息不就结了?根本不用做网页,还快捷简便。不要为了用PHP而用PHP,这么个用法永远也没有提高的可能,反而因为需求不好实现把自己搞得很狼狈。

问题的关键是搞这个项目的就只会半调子的php.你们吹乜...

7楼有什么好的建议吗

问题的关键是搞这个项目的就只会半调子的php.你们吹乜...

终端和server之前是通过http来联系的,之前的办法:当页面上有操作发生时,我们把操作指令存储在一个文件中,终端定时通过http去取这个文件。现在考虑服务器能不能主动推送这些操作指令到终端。
5楼的其他方式指的是什么?能否指点一下


引用 3 楼 challchampion 的回复:

终端就是广告机,户外屏这些东西。
如果用http无法做到的话,倒是可以考虑用socket的,在php上用socket来主动发送信息要如何做呀?


引用 2 楼 zhouzhipen 的回复:

客户在浏览器页面上点击重启,开关机时或做其他操作,我如何将这个信息主动发送给终端呀?
这具体要看你的显示屏类型了,如果可以用SOC……

换成我的话我肯定不会用php做,如果非要的话 php可以做为一个前台,再写一个服务器端来接收php的输入数据进行控制。或者直接开发服务器端和客户端,抛开php.

也许php是固定的,你也可以在前端和你的后端(广告机上)都架设php来传递数据 呵呵,广告机其实也是个win操作系统.简单些直接post get 之后处理 这就简单多了吧...将事件处理成bat文件来调用...


7楼有什么好的建议吗

引用 7 楼 phpnewnew 的回复:

问题的关键是搞这个项目的就只会半调子的php.你们吹乜...

先的确定你的终端和服务端是怎么通讯的

定时ajax行不?

现在广告机之类的产品都是嵌入式的架构了,资源比较受限,而且这个b/s的控制端需要和其他公司的广告机来对接,所以我最多只能在协议上和对方商量。
直接开发服务器端和客户端,抛开php的意思是什么?


换成我的话我肯定不会用php做,如果非要的话 php可以做为一个前台,再写一个服务器端来接收php的输入数据进行控制。或者直接开发服务器端和客户端,抛开php.

也许php是固定的,你也可以在前端和你的后端(广告机上)都架设php来传递数据 呵呵,广告机其实也是个win操作系统.简单些直接post get 之后处理 这就简单多了吧...将事件处理成bat文件来调用...


引用 8……

之前的方式在9楼有说,现在希望可以改进这种办法
刚刚又了解了下,服务端推送好像基本是需要客户端和服务端建立长连接,这可能行不通,不知道这样理解对吗。
其他的办法,tcp或udp也可以考虑

先的确定你的终端和服务端是怎么通讯的

我的终端是(广告机)linux的系统,上面并没有浏览器,定时ajax的思路就和我们之前的办法一个意思了。希望能有办法可以改进,目前是希望服务器端能主动推送

定时ajax行不?

直接开发服务器端和客户端,抛开php的意思是什么?

我说的就是你有的cs.

让对方发布一个这样的接口就对了,客户肯定都有你们这样的需求.这不应该让你们来解决 需要他们来提供接口

我们自己也有广告机,如果和自己的对接,你觉得哪种办法会比较合适呢?

直接开发服务器端和客户端,抛开php的意思是什么?

我说的就是你有的cs.

让对方发布一个这样的接口就对了,客户肯定都有你们这样的需求.这不应该让你们来解决 需要他们来提供接口

我们对你的系统不是太清楚.

"广告机"到底是什么什么我也不是太清楚,就是一个linux上运行的某个软件?

这个就是广告机(A)如何和php服务器(B)通讯的问题.

你们目前的方法当然也行,其实广告机大概不必那么实时响应,现在的方法如果运行正常,实在也没必要改变.

A和B的通讯,一般都是有一个作为服务端,一个作为客户端, 你们目前的方法,是B服务端,A做客户端

如果要"推",是需要长连接或者服务器特别的支持,目前并不普遍, ajax轮询其实和你们目前方案类似, 而且因为你A既不是浏览器,所以不适用.

废话了一圈, 简单点说吧,

既然是linux, 可以让A做服务端,上面跑个守护进程X, B收到php发来的指令, 用socket向A上的X发个请求,然后X运行相应指令即可. 这个当然是用c/c++之类做比较好

不用socket也行,任何A/B之间能交换信息的方法都可以...比如,ssh过去运行指令,ftp一个文本过去,X直接连接A上的数据库拿信息...当然也包括你们现有方案....

谢谢,你分析的很清楚,广告机可以认为就是linux系统上运行的一个软件。
之所以想换方案,就是觉得之前的响应太慢,比如我要设置广告机的音量,或获取广告机的音量,反应的速度很慢,用户体验不是很好。现在要重新做这套系统,要求支持的广告机的数量和操作人员的数量比较大,所以考虑着有没有更好的办法


我们对你的系统不是太清楚.

"广告机"到底是什么什么我也不是太清楚,就是一个linux上运行的某个软件?

这个就是广告机(A)如何和php服务器(B)通讯的问题.

你们目前的方法当然也行,其实广告机大概不必那么实时响应,现在的方法如果运行正常,实在也没必要改变.

A和B的通讯,一般都是有一个作为服务端,一个作为客户端, 你们目前的方法,是B服务端,A做客户端

如果……

一种机制是客户端都定时向服务器请求数据,这样就好办了! 一天请求一次, 服务器一改,第二就生效!

另一种是客户端必须要接收外部信息的端口或服务。 这样socket 信息后,对方能接收解密存诸。 或客户机是有web服务的。

第一种就是现在的办法,定时久了实时性没了,定时短了服务器压力太大
第二种,因为我们的广告机都在路由器后面,socket怎样才能建立呢?
像qq这种聊天工具是如何工作的呢?

一种机制是客户端都定时向服务器请求数据,这样就好办了! 一天请求一次, 服务器一改,第二就生效!

另一种是客户端必须要接收外部信息的端口或服务。 这样socket 信息后,对方能接收解密存诸。 或客户机是有web服务的。

一般情况下通过AJAX定时从服务器上取数据。

有个思路,求鉴定
B/S 客户端 用一个隐藏的flash,用户操作后 js获取操作,通知flash ,然后 flash 接受通知,与php服务器建立socket 通讯,当php处理完消息后 ,把信息发送给flash,并关闭此次socket通讯,flash 将php返回的内容给js,js负责更新页面内容。。。
不知这个思路怎样,求大神鉴定……