您的位置:

php结合swoole,php结合layui个人信息管理系统

本文目录一览:

利用php +swoole如何实现异步任务队列

class msgServer

{

private $serv;

function __construct()

{

$this-serv = new Swoole\Server("127.0.0.1", 9501);//创建一个服务

$this-serv-set(array('task_worker_num' = 4)); //配置task进程的数量

$this-serv-on('receive', array($this, 'onReceive'));//有数据进来的时候执行

$this-serv-on('task', array($this, 'onTask'));//有任务的时候执行

$this-serv-on('finish', array($this, 'onFinish'));//任务结束时执行

$this-serv-start();

}

public function onReceive($serv, $fd, $from_id, $data)

{

$data = json_decode($data, true);

$task_id = $serv-task($data);//这里发起了任务,于是上面的on('task', array($this, 'onTask'))就会执行

}

public function onTask($serv, $task_id, $from_id, $data)

{

$data['send_res'] = $this-sendMsg($data); //发送短信

//1.7.3之前,是$serv-finish("result");

return "result.";//这里告诉任务结束,于是上面的on('finish', array($this, 'onFinish'))就会执行

}

public function onFinish($serv, $task_id, $data)

{

$this-addSendLog($data); //添加短信发送记录

}

}

请教php的laravel怎么整合swoole实现rpc呢?

安装swoole扩展

composer安装laravel

composer安装swooletw插件

laravel中添加swoole服务

composer安装thrift rpc依赖包

创建一个service实现thrift接口

新建sockets目录,创建服务端代理类

创建传输层

编写swoole的rpc服务器类

10.客户端编写测试用例即可。

php为什么要用swoole

Swoole 使 PHP 开发人员可以编写高性能高并发的 TCP、UDP、Unix Socket、HTTP、 WebSocket 等服务,让 PHP 不再局限于 Web 领域。Swoole4 协程的成熟将 PHP 带入了前所未有的时期, 为性能的提升提供了独一无二的可能性。Swoole 可以广泛应用于互联网、移动通信、云计算、 网络游戏、物联网(IOT)、车联网、智能家居等领域。使用 PHP + Swoole 可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。

使用Swoole+PHP开发的IM

(一)扩展安装

    本demo需要的扩展有Swoole、MongoDB、Redis

(二)详细步骤

1、Client在进行长连接操作时会在链接后面跟上用户id,Server在接受到用户id后会将此id与线程id进行绑定,并存入Redis中。

2、Client触发send事件后,会将此消息追加到本地的消息列表中(此时为消息的发送方)。Server在触发onMessage事件后首先会将消息内容存入DB,然后再根据此消息接收者的用户id找到对应的线程id并进行push操作。

3、Client触发onmessage事件后会拿到消息内容并将此内容追加到本地消息列表中。(此时为消息的接收方)

至此,IM的流程就大致梳理完了。

效果图如下:

   

项目源码:

体验地址: