搜索
首页后端开发php教程如何使用swoole来创建服务器(下)

如何使用swoole来创建服务器(下)

Jul 11, 2018 pm 01:42 PM
phpswoolethinkphp

这篇文章主要介绍了关于使用swoole来创建服务器(下) ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

1.创建HttpServer服务器

HttpServer是基于swoole_server,所以swoole_server下的方法HttpServer都可以使用
httpsevrer它只能被客户端唤起

如何使用swoole来创建服务器(下)

1.测试

<?php $http = new swoole_http_server("0.0.0.0", 8811);

$http->on('request', function($request, $response) {
    echo 'nihao';
    $response->end('hello swoole');
});

$http->start();

php执行一下,打开浏览器
如何使用swoole来创建服务器(下)

服务器
如何使用swoole来创建服务器(下)

这里我们发现了一个怪象
1.echo(var_dump,print_rd)的内容在服务器现实
2.而浏览器的内容只能通过end(内容)的方式
end只能调用一次,如果需要分多次向客户端发送数据,请使用write方法

扩展:咦这个,很像我们平时访问的 XXX.com:80 如果我们想要访问下面的文件那怎么办?
是不是想起我们之前tcp和udp都有用到的一个函数 set,这个函数我把它理解为配置,那么我们就怼着它进行配置

$http->set([
      'enable_static_handler' => true,
      'document_root' => "/www/wwwroot/server",//设置根目录这里根据你自己的路径来写
    
]);

是不是很像配置虚拟地址?我们试着访问server目录下的test.html

如何使用swoole来创建服务器(下)

有了!!
一般来说设置了document_root的http_server流程是这样的:
1.先会去根据url去访问document_root相对的路径下的文件,跟配置域名访问文件的原理差不多
2.如果这个文件没有,那么我们http_server才会顺着执行 $http->on('request'function($request, $response));做出相应的相应


2.创建WebSocket服务器

1.特性:
(1)HTTP 协议有一个缺陷:通信只能由客户端发起,做不到服务器主动向客户端推送信息。
而WebSocket它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。
(2)Web_Socket继承http_server
如何使用swoole来创建服务器(下)

由于web_server全双工这个特性所以很适合做聊天室

2.说到这我们就来做一个简单的测试!
(1)我们先写一个web_server.php的文件

$server = new swoole_websocket_server("0.0.0.0", 8811);
//Web_Socket继承http_server,所以它也可以拥有同样的set方法
//包括 $server->on('request', function($request, $response) {}也是可以有的
$server->set(
    [
        'enable_static_handler' => true,
        'document_root' => "/www/wwwroot/server",
    ]
);

//监听websocket连接打开事件
$server->on('open', 'onOpen');
function onOpen($server, $request) {
     echo "fd为:".$request->fd."已经上线\n";
}

// 监听ws消息事件
$server->on('message', function ( $server, $frame) {
    var_dump($frame);
    $msg='fd为'.$frame->fd.'说:'.$frame->data;//$frame->data为客户端传递过来的信息
    $server->push($frame->fd, $msg);
});

$server->on('close', function ($server, $fd) {
    echo "client {$fd} closed\n";
});

$server->start();

(2)然后再写一个客户端文件

<script>
    var url=&#39;ws://你的ip地址:8811&#39;;
    var ws =new WebSocket(url);
    ws.onopen=function (evt) {
        ws.send(&#39;客户端:建立链接成功&#39;);
        console.log(evt);
    }
    ws.onmessage=function(evt){
        console.log(evt);
        console.log(&#39;服务器回复:&#39;+evt.data);
    }
    ws.onclose=function(evt){
        console.log(evt);
    }
    ws.onerror=function(evt){
        console.log(evt);
    }

</script>

如何使用swoole来创建服务器(下)

你可以根据这个来写一个基于web_socket的聊天室,十分有趣

学习了tcp,udp,websocket,http的服务,我们可以做一波总结:

如何使用swoole来创建服务器(下)

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

如何使用swoole来创建服务器(上)

Swooled的学习之Swoole的介绍

以上是如何使用swoole来创建服务器(下)的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
使用PHP发送电子邮件的最佳方法是什么?使用PHP发送电子邮件的最佳方法是什么?May 08, 2025 am 12:21 AM

ThebestapproachforsendingemailsinPHPisusingthePHPMailerlibraryduetoitsreliability,featurerichness,andeaseofuse.PHPMailersupportsSMTP,providesdetailederrorhandling,allowssendingHTMLandplaintextemails,supportsattachments,andenhancessecurity.Foroptimalu

PHP中依赖注入的最佳实践PHP中依赖注入的最佳实践May 08, 2025 am 12:21 AM

使用依赖注入(DI)的原因是它促进了代码的松耦合、可测试性和可维护性。1)使用构造函数注入依赖,2)避免使用服务定位器,3)利用依赖注入容器管理依赖,4)通过注入依赖提高测试性,5)避免过度注入依赖,6)考虑DI对性能的影响。

PHP性能调整技巧和技巧PHP性能调整技巧和技巧May 08, 2025 am 12:20 AM

phperformancetuningiscialbecapeitenhancesspeedandeffice,whatevitalforwebapplications.1)cachingwithapcureduccureducesdatabaseloadprovesrovesponsemetimes.2)优化

PHP电子邮件安全性:发送电子邮件的最佳实践PHP电子邮件安全性:发送电子邮件的最佳实践May 08, 2025 am 12:16 AM

ThebestpracticesforsendingemailssecurelyinPHPinclude:1)UsingsecureconfigurationswithSMTPandSTARTTLSencryption,2)Validatingandsanitizinginputstopreventinjectionattacks,3)EncryptingsensitivedatawithinemailsusingOpenSSL,4)Properlyhandlingemailheaderstoa

您如何优化PHP应用程序的性能?您如何优化PHP应用程序的性能?May 08, 2025 am 12:08 AM

TOOPTIMIZEPHPAPPLICITIONSFORPERSTORANCE,USECACHING,数据库imization,opcodecaching和SererverConfiguration.1)InlumentCachingWithApcutCutoredSatfetchTimes.2)优化的atabasesbasesebasesebasesbasesbasesbaysbysbyIndexing,BeallancingAndWriteExing

PHP中的依赖注入是什么?PHP中的依赖注入是什么?May 07, 2025 pm 03:09 PM

依赖性注射inphpisadesignpatternthatenhancesFlexibility,可检验性和ManiaginabilybyByByByByByExternalDependencEctenceScoupling.itallowsforloosecoupling,EasiererTestingThroughMocking,andModularDesign,andModularDesign,butquirscarecarefulscarefullsstructoringDovairing voavoidOverOver-Inje

最佳PHP性能优化技术最佳PHP性能优化技术May 07, 2025 pm 03:05 PM

PHP性能优化可以通过以下步骤实现:1)在脚本顶部使用require_once或include_once减少文件加载次数;2)使用预处理语句和批处理减少数据库查询次数;3)配置OPcache进行opcode缓存;4)启用并配置PHP-FPM优化进程管理;5)使用CDN分发静态资源;6)使用Xdebug或Blackfire进行代码性能分析;7)选择高效的数据结构如数组;8)编写模块化代码以优化执行。

PHP性能优化:使用OpCode缓存PHP性能优化:使用OpCode缓存May 07, 2025 pm 02:49 PM

opcodecachingsimplovesphperforvesphpermance bycachingCompiledCode,reducingServerLoadAndResponSetimes.1)itstorescompiledphpcodeinmemory,bypassingparsingparsingparsingandcompiling.2)useopcachebachebachebachebachebachebachebysettingparametersinphametersinphp.ini,likeememeryconmorysmorysmeryplement.33)

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。