2020年10月16日

Swoole从入门到入土(12)——HTTP服务器[Response]

摘要: 继上一节了解完请求对象之后,这一节我们着重了解响应对象(Response)。响应对象主要用于将数据发现到客户端。当 Response 对象销毁时,如果未调用 end 发送 HTTP 响应,底层会自动执行 end("")。 关于Response需要注意的是:千万不要使用 & 符号引用 Http\Res 阅读全文

posted @ 2020-10-16 09:18 咚..咚 阅读(752) 评论(0) 推荐(0) 编辑

2020年10月14日

Swoole从入门到入土(11)——HTTP服务器[Request]

摘要: http服务器的本质是应答式的服务器。我们只需关注onRequest事件中的request(请求)和response(响应)对象。让我们一起回顾一下onRequest事件: $http->on("request", function ($request, $response) { $response 阅读全文

posted @ 2020-10-14 15:56 咚..咚 阅读(873) 评论(0) 推荐(0) 编辑

2020年10月10日

Swoole从入门到入土(10)——HTTP服务器[初步接触]

摘要: 讨论完了TCP服务器,接下来的话题就是HTTP服务器。HTTP这个协议“一般”是搭载在TCP协议上实现的。 注意,这里用“一般”是以前多数是这样做的,在“HTTP协议白皮书”中没有规定HTTP协议底层要搭载在哪种协议上,而且在HTTP3(由谷歌QUIC进化而成)所在的传输层就是搭载在UDP协议上。所 阅读全文

posted @ 2020-10-10 21:36 咚..咚 阅读(320) 评论(0) 推荐(0) 编辑

2020年10月7日

Swoole从入门到入土(9)——TCP服务器[协程风格]

摘要: 上一篇,我们一起初步接触了协程。我相信只有一节的讨论,很多小伙伴对于“协程”与“线程”的区分可能还有点模糊。我们这里以两者的比较作为本篇开头,进行一番比较。 首先,“协程”与“线程”的任务调度机制不一样。“协程”重在“协调”,“线程”重在“抢占”。 举个例子:现在有一个任务,需要5个“子协程”同时进 阅读全文

posted @ 2020-10-07 18:17 咚..咚 阅读(692) 评论(0) 推荐(0) 编辑

Swoole从入门到入土(8)——协程初探

摘要: 这一章节“协程”话题的讨论是为了让我们对之后协程风格服务端有更全面的了解。所以我们需要先一起了解一下什么是协程?协程有什么作用? 当大家第一次看到“协程”这个词的时候,应该都一样会打开某度、某歌搜索一翻,然后搜到一堆很玄幻的概念,比如以下这一句:“协程(coroutine)也是一种程序组件。相对子例 阅读全文

posted @ 2020-10-07 11:50 咚..咚 阅读(880) 评论(0) 推荐(0) 编辑

2020年10月6日

Swoole从入门到入土(7)——TCP服务器[大杂烩]

摘要: 这一篇是异步风格的TCP服务器的最后一篇,主要的目的是疏理之前几篇没提到的一些比较有用的属性、配置、函数与事件,当然不是全部。如果想知道全部,请查看官网。 1、属性 Swoole\Server->setting:Server::set() 函数所设置的参数会保存到 Server->$setting 阅读全文

posted @ 2020-10-06 17:38 咚..咚 阅读(861) 评论(0) 推荐(0) 编辑

2020年10月2日

Swoole从入门到入土(6)——TCP服务器[粘包]

摘要: 在了解Swoole下如何处理粘包问题之前,我们需要先了解什么是“粘包”。我们以下面这张图进行普及: 假设客户端分别发送了两个数据包D1和D2给服务端,由于服务端一次读取到的字节数是不确定的,故可能存在以下几种情况。(1)服务端分两次读取到了两个独立的数据包,分别是D1和D2,没有粘包和拆包;(2)服 阅读全文

posted @ 2020-10-02 18:24 咚..咚 阅读(653) 评论(0) 推荐(0) 编辑

2020年10月1日

Swoole从入门到入土(5)——TCP服务器[异步任务]

摘要: 无论对于B/S还是C/S,程序再怎么变,唯一不变的是用户不想等太久的躁动心情。所以服务端对于客户的请求,能有多快就多快。如果服务端需要执行很耗时的操作,就需要异步任务处理机制,保证当前的响应速度不受影响。 现在以下面的一个例子为引子: <?php $server = new Swoole\Serve 阅读全文

posted @ 2020-10-01 18:00 咚..咚 阅读(516) 评论(0) 推荐(0) 编辑

2020年9月8日

Swoole从入门到入土(4)——TCP服务器[正确重启]

摘要: 在上一篇中,我们提到了一个配置项max_wait_time。这个配置项决定了在服务端在进程经束的时候,在max_wait_time时间内onWorkerStop事件会完成扫尾工作。 那什么时候worker进程会结束呢?那当然是手动关闭(管理进程收到重启、关闭信号后)或者自动关闭(达到 max_req 阅读全文

posted @ 2020-09-08 10:44 咚..咚 阅读(949) 评论(0) 推荐(0) 编辑

2020年9月3日

Swoole从入门到入土(3)——TCP服务器[基本配置项]

摘要: 在这一节的开篇,让我们先解决上一节的“配置”话题。对于server对象,有很多配置项决定了服务端的行为,可以用set的函数进行配置的设置。 1、函数set:用于设置运行时的各项参数。服务器启动后通过 $serv->setting 来访问 Server->set 方法设置的参数数组。 Swoole\S 阅读全文

posted @ 2020-09-03 21:50 咚..咚 阅读(787) 评论(0) 推荐(0) 编辑

2020年9月2日

Swoole从入门到入土(2)——TCP服务器[初步接触]

摘要: 我们知道Swoole弥补了PHP没办法实现长连接的短板,在接下来的话题中,我们会从TCP服务器、HTTP服务器、WebSocket服务器、协程、管道、中间件等话题,一个个进行讨论。 1、开篇 我们以Swoole一个最简单的例子作为开篇: //创建Server对象,监听 127.0.0.1:9501 阅读全文

posted @ 2020-09-02 21:51 咚..咚 阅读(670) 评论(0) 推荐(0) 编辑

2020年8月10日

Swoole从入门到入土(1)——入坑

摘要: 入坑一个话题,总得有入坑的理由。有好多话题可供选择,但是思来想去,对于PHPer进阶与其急着去掌握一门新的语言,匆忙地踏足一个新的知识体系,还不如先把php圈子的技能点攒齐了。 话说Swoole诞生之前,php是世界上最好的语言。但很可惜php语言无法支持长连接,始终是个遗憾。而自从Swoole诞生 阅读全文

posted @ 2020-08-10 22:51 咚..咚 阅读(519) 评论(0) 推荐(0) 编辑

2020年8月7日

Laravel入坑指南(番外)——任务调度

摘要: Laravel提供了非常强劲的命令行工具(如果还不了解,传送到第8往篇),我们如果想要定期执行某个命令行,可以利用crontab进行定时设置。如果有多个定期的任务,很简单,我们设定多条crontab规则在不同时间段内调度不同的命令即可。 而Laravel框架内部也提供了这样的调度机制。(当然,还是逃 阅读全文

posted @ 2020-08-07 21:36 咚..咚 阅读(942) 评论(0) 推荐(0) 编辑

2020年8月5日

Laravel入坑指南(12)——最终章:Session、缓存与Redis

摘要: 因为web服务除了业务准确之外,我们最关注的就是服务的性能。鉴于web服务几乎都是IO密集型,我们为了提高IO的速度,自然不能把所有的数据都放在关系型数据库中。而redis的并发与性能可以很好地帮我们解决这个问题,并且php语言对redis接口是非常友好的,所以redis就自然而然成为我们关注的焦点 阅读全文

posted @ 2020-08-05 17:03 咚..咚 阅读(1481) 评论(0) 推荐(0) 编辑

2020年8月4日

Laravel入坑指南(11)——列队

摘要: 很高兴,我们来到了Laravel入坑指南的第11篇。这一系列的文章已经接近尾声了,在这一节里面,我们一起讨论列队的用法。 列队,顾名思义,将需要处理的任务一个一个排好队,等待处理程序来处理。这机的列队机制,适用于需要异步处理的任务。 所以在这里,我们首先需要关注三个问题:谁来投递任务?将任务投递到哪 阅读全文

posted @ 2020-08-04 23:43 咚..咚 阅读(469) 评论(0) 推荐(0) 编辑

2020年8月3日

Laravel入坑指南(10)——事件Event

摘要: 不知不觉,我们已经来到了第10小节。这一小节,我们一起讨论关于“事件”这个话题。众所周知,从二进制到汇编,再到高等级语言,这一路发展下来,代码都是顺序执行的,那么事件是什么?这个事件上本没有事件,纠结的人多了也就有了事件。 如果你也是编程界的泥石流,你就会发现事件发源于消息(或者信号),当代码执行到 阅读全文

posted @ 2020-08-03 11:56 咚..咚 阅读(415) 评论(0) 推荐(0) 编辑

2020年8月1日

PHP代码混淆与加密——php screw plus

摘要: php是一个开源的、广受欢迎的语言,php应用常常是以代码明文的方式发布,但是有时候对于发布的代码我们想要进行保护,需要对php代码进行混淆与加密,让增加破解者的逆向难度,从而达到保护自己成果的目的。 在市面上流行的加密方案非常多,比如: Zend Guard:遗憾的是不支持PHP7 IonCube 阅读全文

posted @ 2020-08-01 21:25 咚..咚 阅读(4360) 评论(0) 推荐(0) 编辑

2020年7月27日

Laravel入坑指南(9)——数据迁移与填充

摘要: 当我们开发完成一个(小)项目,发布到线上时,我们需要将本地数据库迁移到服务器上,并且填充初始化数据。而Laravel框架规定了一套完善的数据迁移与填充机制。 在官网中分别介绍了以下四个命令: php artisan make:migration php artisan migrate php art 阅读全文

posted @ 2020-07-27 11:45 咚..咚 阅读(647) 评论(0) 推荐(0) 编辑

2020年7月26日

Laravel入坑指南(8)——控制台程序

摘要: 我们知道,php代码不仅可以用web的形式对外提供服务,同时也可以在命令行下执行。 对于原生的php来说,假设我们有一个php文件,名为Command.php,如果想要在控制台下执行这个文件,那么我们有两种办法: 方法一:(适用于Windows和Linux) php Command.php #如果$ 阅读全文

posted @ 2020-07-26 22:47 咚..咚 阅读(454) 评论(0) 推荐(0) 编辑

2020年7月24日

Laravel入坑指南(7)——中间件Middleware

摘要: Laravel框架中引入了“中间件”这个概念,笔者觉得不是太合适。这里的Middleware和Java Servlet中的过滤器(Filter)就是一个东西,但是想比之下Filter这个词更容易理解一些。当然,为了入乡随俗,我们在这里也称这东西为“中间件”。 中间件的作用其实很简单,很明了:在业务行 阅读全文

posted @ 2020-07-24 14:47 咚..咚 阅读(1009) 评论(0) 推荐(0) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示