内容简介:php swoole使用简单实例
本文记录一次对swoole初步的学习和简单的使用。
欢迎讨论和吐槽。
####swoole简介
Swoole是一种 PHP 高级Web开发框架,框架不是为了提升网站的性能,是为了提升网站的开发效率。使用异步协程的特效,提升代码效率。
####swoole使用
我的业务使用场景是对应活动发奖品(发积分,赠劵,礼包),希望在对用户的领取条件判断通过后,立刻给用户返回提示,然后用swoole异步发这些奖品。
搭建的结构如下:tools,business,servers,client文件夹。
- tools下是与业务无关的 工具 类;
- business下是业务共用类;
- servers下是swoole server,处理发奖操作,可参考一下server:
<?php
include "../business/ScoreService.php";
use business\ScoreService;
$serv = new swoole_server("127.0.0.1", 9501);
//设置异步任务的工作进程数量
$serv->set(array('task_worker_num' => 4));
$serv->on('receive', function($serv, $fd, $from_id, $data) {
//投递异步任务
$task_id = $serv->task($data);
echo "receive";
});
//处理异步任务
$serv->on('task', function ($serv, $task_id, $from_id, $data) {
sendScore($data);
//返回任务执行的结果
$serv->finish($data);
});
//处理异步任务的结果
$serv->on('finish', function ($serv, $task_id, $data) {
echo "finish";
});
$serv->start();
function sendScore($data){
//获取到$data
$arr = json_decode($data,true);
//判断数据是否异常
//业务发奖代码
return true;
}
client下,建立client class,连接server操作,业务使用的时候,不需要关注swoole的细节,只需要使用client提供的接口即可,样例如下:
<?php
namespace client;
class ScoreClient
{
public function send($msg){
$client = new \swoole_client(\SWOOLE_SOCK_TCP);
//连接到服务器
if (!$client->connect('127.0.0.1', 9501, 1)){
//
}
//向服务器发送数据
if (!$client->send($msg)){
//
}
//关闭连接
$client->close();
}
}
然后在业务机器上启动swoole server,就可以调用client中的方法去执行对应的功能。
####思考和优化
- 建议除此server执行外,还有个定时任务server去处理执行失败的任务。
- 可以参考腾讯的tsf框架,用异步和协程的特性处理部分业务。
以上所述就是小编给大家介绍的《php swoole使用简单实例》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- protobuf C++使用实例
- 使用 vue 实例更好的监听事件
- 实例详解Spring MVC入门使用
- python使用锁访问共享变量实例解析
- numpy.random.seed()的使用实例解析
- numpy使用技巧之数组过滤实例代码
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Head First Rails
David Griffiths / O'Reilly Media / 2008-12-30 / USD 49.99
Figure its about time that you hop on the Ruby on Rails bandwagon? You've heard that it'll increase your productivity exponentially, and allow you to created full fledged web applications with minimal......一起来看看 《Head First Rails》 这本书的介绍吧!
HTML 编码/解码
HTML 编码/解码
Markdown 在线编辑器
Markdown 在线编辑器