php 监听端口后,把获取的内容转发给服务器

php 监听端口后,把获取的内容转发给服务器,第1张

你可以在监听的时候把监听到的内容存储起来,数据库/文件/缓存都行。

在浏览器能访问的脚本中把内容显示出来就行了。

或者你直接用websocket来监听,接受到数据直接写在页面上。

消息服务器使用socket,为避免服务器过载,单台只允许500个socket连接,当一台不够的时候,扩充消息服务器是必然,问题来了,如何让链接在不同消息服务器上的用户可以实现消息发送呢?

要实现消息互通就必须要让这些消息服务器本身能互通,想了两个方式,一种是消息服务器之间交叉链接,另一种是增加一个特殊的消息服务器,这个消息服务器不对外开放,只负责消息转发和推送。

下列测试不考虑防火墙等。仅测试可行性和效率。

消息服务器

转发服务器

公共缓存

软件环境

client1 可向 client2 或者其他 client 发送消息,并接收其他 client 发送的消息.

Redis 中保存 client 连接的信息,给每个用户分配唯一的 key ,包括链接的哪台服务器,转发服务器定时检测消息服务器,如消息服务器挂掉,由转发服务器清理掉Redis已经挂掉的所有链接。

1. Client1 给 Client2 发送一条消息

2. Socket1 接收到消息,根据 key从Redis 取出 Client2 的连接信息,连接在本机,直接推送给 Client2 ,流程结束。

3.如果连接不在本机,把消息推送到转发服务器,由转发服务器把该消息推送给连接所在消息服务器,消息服务器接收消息,推送给 Client2 。

服务器上创建一个server.php,内容如下:

上只需把ip变更一下即可。192.168.0.201变更为192.168.0.202.

在转发服务器上建立脚本proxy.php,内容如下:

注意开启顺序

1.开启转发服务器php proxy.php

2.分别开启socket服务器php server.php

可以在转发服务器上看到两个消息服务器已经连接

3.开始测试,分别打开两个telnet,连接两个消息服务器,发送消息测试:

登陆

基于强大的 swoole 扩展,让php高效的实现这些成为可能,目前消息服务器到转发服务器是长连接,转发服务器到消息服务器是短连接,存在性能瓶颈,也浪费了连接资源。下一步改造成长连接,消息服务器的client使用异步。

<?php

// 链接ftp

$conn = ftp_connect('地址', '端口', '超时时间')

// 登录

ftp_login($conn, '账号', '密码')

$here = ftp_pwd($conn)

//获取服务器端系统信息ftp_systype()

$server_os = ftp_systype($conn)

//被动模式(PASV)的开关,打开或关闭PASV(1表示开)

ftp_pasv($conn, 1)

//进入目录中用ftp_chdir()函数,它接受一个目录名作为参数。

ftp_chdir($conn, "public_html")

//ftp_mkdir($conn, "test")

ftp_put($conn, "服务器显示的名称", "要上传的文件名称", FTP_ASCII)

ftp_quit($conn)


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/404791.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存