fastdlabs / fastD

:rocket: A high performance PHP API framework.
https://fastdlabs.com
MIT License
420 stars 83 forks source link

请教swoole的task功能在fastD中如何支持 #8

Closed yyz26371945 closed 7 years ago

yyz26371945 commented 7 years ago

我有个之前已经做好的API框架,是基于swoole的,其中有个api使用了task功能,会在里面做一些其它操作,然后落地为日志,供agent采集。我看了fastD,版本3.0.0,没找到合适的实现方式,请问,这个框架可以支持吗?

JanHuang commented 7 years ago

3.0.0 对 task 的支持还不够好,可以通过多端口的方式进行实现。默认集成的 http 没有提供task的方式。在3.1.0 中已经支持 task,并且配置更加灵活。您可以尝试一下,目前3.1版本已经收尾阶段,提供了更多的特性和管理方式,可以在3.1分支找到。 @yyz26371945

yyz26371945 commented 7 years ago

好的,两种方法我都试试

JanHuang commented 7 years ago

@yyz26371945 文档中可能我写漏了,回头我补回task的使用方法。

yyz26371945 commented 7 years ago

好的,感谢~

JanHuang commented 7 years ago

@yyz26371945 文档已经补上TaskServer

可以查看 dobee 上的实现 0.2 分支 TaskServer 和配置文件 config

yyz26371945 commented 7 years ago

我看了下,从composer上拉下来的没有FastD\Servitization命名空间,那是3.1.0才加入的吗?

JanHuang commented 7 years ago

嗯嗯,该模块是3.1才加入的,目前3.1已经在最后测试阶段,已经相对稳定,如不介意,可以尝试使用。目前我们也是使用3.1进行开发

yyz26371945 commented 7 years ago

好的,我这边还没开始迁移,那我就直接用3.1的来开发,感谢哈

JanHuang commented 7 years ago

好的,感谢支持。欢迎建议

yyz26371945 commented 7 years ago

你好,在迁移过程中,发现新版的Task实现对这样的场景支持不太友好:有一些请求是需要走到Controller里面处理的,然后在Controller里面做一些处理后通过task投递给task进程处理,但是目前3.1-dev版本我在Controller里面没找到获取swoole server实例的方法,不知道这块怎么才能实现呢?

JanHuang commented 7 years ago

@yyz26371945 OK,明白你的需求。可以实现这个功能,但是我可能需要测试一下。我测试完推送代码,感谢建议

yyz26371945 commented 7 years ago

好的,感谢及时的回复,期待新版本哈

JanHuang commented 7 years ago

@yyz26371945 可以在控制器中通过 server() 函数获取 swoole_server 对象,然后进行操作。如:

<?php
namespace Controller;

use FastD\Http\ServerRequest;

class IndexController
{
    public function welcome(ServerRequest $request)
    {
        server()->task('hello dobee');

        return json([
            'msg' => 'hello dobee',
        ]);
    }
}
JanHuang commented 7 years ago

@yyz26371945 但是值得注意的是,server() 乃swoole 服务器的产品,在FPM模式下是不存在的。因此要注意使用场景。

yyz26371945 commented 7 years ago

好的,多谢给力的支持

yyz26371945 commented 7 years ago

提一个小bug哈,封装的数据库服务缺少了medoo的prefix参数支持

JanHuang commented 7 years ago

好咧。您要是可以的话,可以给我提PR。哈哈。我稍后就去修复。

yyz26371945 commented 7 years ago

已经提了哈~

JanHuang commented 7 years ago

@yyz26371945 感谢。已合并