2 qq 18757961 qq_18757961 于 2017.09.10 19:11 提问

最多有2000个点同时与服务器互传数据。用PHPredis队列socket,请大神写个示例代码

我现在只知道:以下两部分,但是不知如何将两者结合?让redis来处理socket的2000个连接?请大神帮我结合下,写个基本的样板我参考下,谢谢啦!

redis的基础代码:

//连接本地的 Redis 服务
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
//存储数据到列表中
$redis->lpush("tutorial-list", "Redis");
$redis->lpush("tutorial-list", "Mongodb");
$redis->lpush("tutorial-list", "Mysql");
// 获取存储的数据并输出
$arList = $redis->lrange("tutorial-list", 0 ,5);
echo "Stored string in redis";
print_r($arList);

//连接本地的 Redis 服务
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
// 获取数据并输出
$arList = $redis->keys("*");
echo "Stored keys in redis:: ";
print_r($arList);

socket部分:
set_time_limit(0);

$ip = '0.0.0.0';

$port = 8081;

do {

if(($sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) < 0) {

echo "socket_create() 失败的原因是:".socket_strerror($sock)."\n";

}

if(($ret = socket_bind($sock,$ip,$port)) < 0) {

echo "socket_bind() 失败的原因是:".socket_strerror($ret)."\n";

}

if(($ret = socket_listen($sock,4)) < 0) {

echo "socket_listen() 失败的原因是:".socket_strerror($ret)."\n";

}

if (($msgsock = socket_accept($sock)) < 0) {  
    echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";  
    break;  
} else {            
    $msg = "\nPHP Test Server. \n" ."用quit,shutdown,sun等命令测试.\n";  
    socket_write($msgsock, $msg, strlen($msg)); 
    socket_last_error();   
    do{
        if(false ===($buf = socket_read($msgsock,8192))){
        echo "socket_read() failed: reason: " . socket_strerror($ret) . "\n";  
                break 2; 
        } 
        if (!$buf = trim($buf)) {  
            continue;  
    }  
    if ($buf == 'sun') {  
            echo'what are you doing?'; 

            $msg = "\nPHP Test Server. \n" ."what are you doing?.\n";  
        socket_write($msgsock, $msg, strlen($msg));  
    }  
    if ($buf == 'quit') {  
            break;      /*服务器还在监听*/
    }  
    if ($buf == 'shutdown') {  
            socket_close($msgsock);  
            break 2;    /*服务器已经断开连接*/
    }                     
    $talkback = "receive:" . $buf;  
    socket_write($msgsock, $talkback, strlen($talkback));
    echo $talkback . '<br /n>';
    }while(true);

}  
//socket_close($msgsock);      

} while (true);

//socket_close($sock);

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C# Socket 客户端服务端封装 支持多连接处理 Tasks多线程 队列处理 大数据拆分包处理
Socket 客户端代码封装、服务端代码封装,让使用Socket更简单。 同时服务端支持超过客户端连接(测试超过1万个同时连接稳定运行),Tasks多线程 队列处理 大数据拆分包处理
C#版服务端双缓冲队列
C#版服务端双缓冲队列,采用空间换时间的思想,解决频繁争夺锁之间的时间开销
Android Socket编程客户端服务器端源码
一个简单的Android Socket 编程实例,有简单的客户端,服务器端源码。
Android手机间使用socket进行文件互传
Android socket 文件互传 Android系统间使用socket进行文件互传
TTcpClient & TTcpServer 示例代码.
开发平台:Delphi XE5 测试平台:Windows 7(64bit),Windows Xp Sp3(32bit) 说明:使用Delphi 自带的 TTcpClient 与 TTcpServer 编写 Socket ThreadBlocking Demo 示例代码。里面有详细的注释,因为是线程处理,所以理论上在Windows 平台中 最多不能超过2000个线程。即最大为2000个客户端。此示例代码也可以做为模版,只要在客户端低于2000时, 均可使用此模版进行开发。
Java 聊天系统 Swing Socket 文件传输
Java做的关于B\S的聊天系统源代码。
1万个点数据的地图展示
利用矢量切片技术结合抽稀,将1万个点快速的绘制于前端。操作时延低于2s。
用于两台电脑之间传输文件的工具
此软件用C#代码构造,用于两台电脑之间传输文件的工具。
用socket实现的最简单的web服务器示例
用socket实现的最简单的web服务器示例源代码
java编程socket与线程之单个客户端与多个客户端向服务端发送
这是两个简单的socket与线程的小例子,一个是单个客户端向服务端发送图片,另外一个是多个客户端向服务端发送图片,例子都是.java文件,复制到eclipse中便可以直接使用的,对于刚刚接触线程与socket网络编程的人,应该会有所帮助。