热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置swoole安装基本配置

php安装swoole1.下载swoole安装wgethttp:pecl.php.netgetswoole-1.9.1.tgztar-zxvfswoole-1.9.1.tgzcds

php安装swoole

1. 下载swoole安装

利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置
wget http://pecl.php.net/get/swoole-1.9.1.tgz
tar -zxvf swoole-1.9.1.tgz
cd swoole-1.9.1
phpize
./configure
make
make install
利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置

2. 在php.ini添加swoole.so

extension=swoole.so

php -m查看是否安装成功

利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置

 

环境依赖

  • 仅支持Linux,FreeBSD,MacOS,3类操作系统
  • Linux内核版本2.3.32以上
  • PHP5.3.10以上版本
  • gcc4.4以上版本或者clang
  • cmake2.4+,编译为libswoole.so作为C/C++库时需要使用cmake 

PHP版本依赖

  • swoole仅支持PHP5.3.10或更高版本,建议使用PHP5.4+
  • swoole不依赖php的stream、sockets、pcntl、posix、sysvmsg等扩展。PHP只需安装最基本的扩展即可 

PHP直播代码

1.start.php 使用时需要开启,服务器输入(php start.php)

利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置
php
//php在线直播示例代码
//使用PHPCLI模式运行
//命令:php start.php

//设置路径
define('_ROOT_', dirname(__FILE__));
require_once _ROOT_.'/function.php';
//监听地址和端口
$server = new swoole_websocket_server("0.0.0.0(这里就是四个0,不要改)", 8888);
//服务端接收连接事件
$server->on('open', function (swoole_websocket_server $server, $request) {
    if(!file_exists(_ROOT_.'/client/'.$request->fd.'.client')){
        @file_put_contents(_ROOT_.'/client/'.$request->fd.'.client',$request->fd);
    }
});
//服务端接收信息事件
$server->on('message', function (swoole_websocket_server $server, $frame) {
    foreach(notice(_ROOT_.'/client/') as $v){
            $server->push($v,$frame->data);
    }
});
//服务端接收关闭事件
$server->on('close', function ($ser, $fd) {
    @unlink(_ROOT_.'/client/'.$fd.'.client');
});
//服务开启
$server->start();
利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置

2.index.html 直播页面,访问该页面观看直播

利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置


    
    





利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置

3.rec.html主播录制页面,访问该页面进行直播录制

利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置


    
    






利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置

4.function.php 统计数据页面

利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置
php
//统计在线人数
function clearDir($dir)
{
    $n = 0;
    if ($dh = opendir($dir))
    {
        while (($file = readdir($dh)) !== false)
        {
            if ($file == '.' or $file == '..')
            {
                continue;
            }
            if (is_file($dir . $file)) {
                $n++;
            }
        }
    }
    closedir($dh);
    return $n;
}

//通知在线的人
function notice($dir){
    if ($dh = opendir($dir))
    {
        while (($file = readdir($dh)) !== false)
        {
            if ($file == '.' or $file == '..')
            {
                continue;
            }
            if (is_file($dir . $file)) {
                $array[]=file_get_contents($dir.$file);
            }
        }
    }
    closedir($dh);
    return $array;
}
利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置

5.在同级目录php

PHP 即使通讯

1.socket.php 一样,使用时需要开启

 

on('open', function ($ws, $request) {
        $fd[] = $request->fd;
        $GLOBALS['fd'][] = $fd;
        //$ws->push($request->fd, "hello, welcome\n");
    });

    //监听WebSocket消息事件
    $ws->on('message', function ($ws, $frame) {
        $msg =  'from'.$frame->fd.":{$frame->data}\n";
    //var_dump($GLOBALS['fd']);
    //exit;
        foreach($GLOBALS['fd'] as $aa){
            foreach($aa as $i){
                $ws->push($i,$msg);
            }
        }
       // $ws->push($frame->fd, "server: {$frame->data}");
        // $ws->push($frame->fd, "server: {$frame->data}");
    });

    //监听WebSocket连接关闭事件
    $ws->on('close', function ($ws, $fd) {
        echo "client-{$fd} is closed\n";
    });

    $ws->start();

 

2.socket.html聊天页面

利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置


    
    


 
 
 
 
原文地址:http://www.cnblogs.com/liucaodan/p/7028266.html利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置

php安装swoole

1. 下载swoole安装

利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置
wget http://pecl.php.net/get/swoole-1.9.1.tgz
tar -zxvf swoole-1.9.1.tgz
cd swoole-1.9.1
phpize
./configure
make
make install
利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置

2. 在php.ini添加swoole.so

extension=swoole.so

php -m查看是否安装成功

利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置

 

环境依赖

  • 仅支持Linux,FreeBSD,MacOS,3类操作系统
  • Linux内核版本2.3.32以上
  • PHP5.3.10以上版本
  • gcc4.4以上版本或者clang
  • cmake2.4+,编译为libswoole.so作为C/C++库时需要使用cmake 

PHP版本依赖

  • swoole仅支持PHP5.3.10或更高版本,建议使用PHP5.4+
  • swoole不依赖php的stream、sockets、pcntl、posix、sysvmsg等扩展。PHP只需安装最基本的扩展即可 

PHP直播代码

1.start.php 使用时需要开启,服务器输入(php start.php)

利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置
php
//php在线直播示例代码
//使用PHPCLI模式运行
//命令:php start.php

//设置路径
define('_ROOT_', dirname(__FILE__));
require_once _ROOT_.'/function.php';
//监听地址和端口
$server = new swoole_websocket_server("0.0.0.0(这里就是四个0,不要改)", 8888);
//服务端接收连接事件
$server->on('open', function (swoole_websocket_server $server, $request) {
    if(!file_exists(_ROOT_.'/client/'.$request->fd.'.client')){
        @file_put_contents(_ROOT_.'/client/'.$request->fd.'.client',$request->fd);
    }
});
//服务端接收信息事件
$server->on('message', function (swoole_websocket_server $server, $frame) {
    foreach(notice(_ROOT_.'/client/') as $v){
            $server->push($v,$frame->data);
    }
});
//服务端接收关闭事件
$server->on('close', function ($ser, $fd) {
    @unlink(_ROOT_.'/client/'.$fd.'.client');
});
//服务开启
$server->start();
利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置

2.index.html 直播页面,访问该页面观看直播

利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置


    
    





利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置

3.rec.html主播录制页面,访问该页面进行直播录制

利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置


    
    






利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置

4.function.php 统计数据页面

利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置
php
//统计在线人数
function clearDir($dir)
{
    $n = 0;
    if ($dh = opendir($dir))
    {
        while (($file = readdir($dh)) !== false)
        {
            if ($file == '.' or $file == '..')
            {
                continue;
            }
            if (is_file($dir . $file)) {
                $n++;
            }
        }
    }
    closedir($dh);
    return $n;
}

//通知在线的人
function notice($dir){
    if ($dh = opendir($dir))
    {
        while (($file = readdir($dh)) !== false)
        {
            if ($file == '.' or $file == '..')
            {
                continue;
            }
            if (is_file($dir . $file)) {
                $array[]=file_get_contents($dir.$file);
            }
        }
    }
    closedir($dh);
    return $array;
}
利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
    


            
swoole安装基本配置

5.在同级目录php

PHP 即使通讯

1.socket.php 一样,使用时需要开启

 

on('open', function ($ws, $request) {
        $fd[] = $request->fd;
        $GLOBALS['fd'][] = $fd;
        //$ws->push($request->fd, "hello, welcome\n");
    });

    //监听WebSocket消息事件
    $ws->on('message', function ($ws, $frame) {
        $msg =  'from'.$frame->fd.":{$frame->data}\n";
    //var_dump($GLOBALS['fd']);
    //exit;
        foreach($GLOBALS['fd'] as $aa){
            foreach($aa as $i){
                $ws->push($i,$msg);
            }
        }
       // $ws->push($frame->fd, "server: {$frame->data}");
        // $ws->push($frame->fd, "server: {$frame->data}");
    });

    //监听WebSocket连接关闭事件
    $ws->on('close', function ($ws, $fd) {
        echo "client-{$fd} is closed\n";
    });

    $ws->start();

 


推荐阅读
  • 我们正在使用GNU Make来构建我们的系统,在makefile文件的末尾,我们通过一个名为Makedepends的包含来生成一系列的.d文件。然而,当文件被删除或移动时,依赖关系会中断,我们需要寻找一种方法来优雅地处理这种情况。 ... [详细]
  • PHP 5.4.8 编译安装指南
    本文详细介绍了如何在Linux环境下编译安装PHP 5.4.8,并配置为FastCGI模式运行。包括所需依赖包的安装、源代码下载、编译配置及启动服务等步骤。 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • 求助:在CentOS 5.8系统上安装PECL扩展遇到问题
    在 CentOS 5.8 系统上尝试安装 APC 扩展时遇到了问题,具体表现为 PECL 工具无法正常工作。为了确保顺利安装,需要解决 PECL 的相关依赖和配置问题。建议检查 PHP 和 PECL 的版本兼容性,并确保所有必要的库和开发工具已正确安装。此外,可以尝试手动下载 APC 扩展的源代码并进行编译安装,以绕过 PECL 工具的限制。 ... [详细]
  • 在CentOS 7上部署WebRTC网关Janus
    在CentOS 7上部署WebRTC网关Janus ... [详细]
  • 腾讯与阅文集团在技术领域展开合作,共同推进微服务框架Tars的发展。此次合作中,Tars新增了对PHP语言的支持,不仅强化了Tars-PHP作为客户端的功能,还显著提升了其在服务端的应用能力。这一改进旨在满足不同业务场景下的多样化需求,为开发者提供更加灵活和高效的技术解决方案。 ... [详细]
  • 目录RPC是什么RPC的优点RPC的缺点RPC是什么RPC(RemoteProcedureCall)isaprotocolthatoneprogramcanusetorequest ... [详细]
  • 本文探讨了在使用Apache Flink向Kafka发送数据过程中遇到的事务频繁失败问题,并提供了详细的解决方案,包括必要的配置调整和最佳实践。 ... [详细]
  • Web网络基础
    目录儿1使用HTTP协议访问Web2HTTP的诞生2.1因特网的起源2.2互联网、因特网与万维网2.3万维网与HTTP3网络基础TCPIP3.1TCPIP协议族3.2TCPIP的分 ... [详细]
  • 本文探讨了Linux环境下线程私有数据(Thread-Specific Data, TSD)的概念及其重要性,介绍了如何通过TSD技术避免多线程间全局变量冲突的问题,并提供了具体的实现方法和示例代码。 ... [详细]
  • oracle 对硬件环境要求,Oracle 10G数据库软硬件环境的要求 ... [详细]
  • Vulnhub DC3 实战记录与分析
    本文记录了在 Vulnhub DC3 靶机上的渗透测试过程,包括漏洞利用、内核提权等关键步骤,并总结了实战经验和教训。 ... [详细]
  • 开源项目_一个国外开源项目描述中有中文“谢谢”,到底发生了什么?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了一个国外开源项目描述中有中文“谢谢”,到底发生了什么?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 一.HTTP与TCP的关系HTTP属于应用层协议,主要解决如何包装数据;在传输层使用TCP协议,主要解决数据如何在网络中传输;在网络层使用IP协议,主要解决网络路由和寻址问题;HT ... [详细]
  • 腾讯云前台面经(笔试+3技术面+HR面)
    话不多说,直接上题。(时间周期太长,可能不太全了)面试周期:从投递简历到收到offer大概经历了一个月左右,所以最好还是不要裸辞,不然心态会裂开。笔试题:(二面、三面后的笔试)1、 ... [详细]
author-avatar
天生骄傲
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有