PHP语言是一门生命周期短的Web编程语言,很多PHPer都养成了在fpm下编程的心态。其实在Swoole出现之后,这种串行编程模式早就被打破了。使用Swoole可以轻松实现更灵活的并发编程。场景介绍假设我们要做一款剪刀石头布的网页游戏,三名玩家同时提交测验后会显示获胜者。在传统的连载web编程中,我们的大致思路是:设置form表单,用户提交问题后将猜测结果保存到MySQL/Redis存储,并添加一个查看结果的按钮。如果没有全部完成,会显示正在等待其他人提交。当3个人都提交时,查询存储并显示最终结果。在这种并发编程的场景下,可以使用Swoole实现并发编程,不依赖MySQL/Redis存储,在内存中完成小题。当用户提交测验时,请求被搁置,没有返回结果,用户进入等待状态。当前请求和连接保存在内存中。当3个人都提交时,从内存中取出相关请求的内容,计算遍历,将响应码发送给所有的请求。实现on('request',function($req,$resp)use(&$result){$resp->header('Content-Type','text/html;charset=UTF-8');if($req->server['request_method']=='GET'){$resp->end('
\n";}foreach($resultas$arr){[$_req,$_resp]=$arr;$_resp->结束($out);}$结果=[];}}});$服务器->开始();执行程序phpgame.php打开3个Chrome标签页,URL中传入的名称分别为A、B、C代表3个用户。当提交第一个和第二个结果时,没有返回任何结果,Chrome一直在兜圈子等待服务器返回结果。当提交第三个表单时,三个Tab页同时返回结果。并发问题并发编程比串行编程更强大、更复杂。并发编程会遇到以前串行编程不存在的新问题,例如:数据同步问题、上下文管理问题、时序问题,这就需要开发者有更严谨的工程思维和更深层次的编程功底。思维转变Swoole实际上颠覆了以往的PHP编程模式,让程序员的视野不再局限于一个请求的处理,不再局限于数据库CURD操作和接口调用。利用Swoole4提供的协程编程能力,可以在内存空间实现各种复杂的交互。全新的编程模式让PHPer可以轻松实现网络游戏、服务器系统、智能家居、物联网等项目。转载:https://course.swoole-cloud.com/article/9
