Coder Social home page Coder Social logo

fastd's People

Contributors

janhuang avatar lichunqiang avatar longxinh avatar runnerlee avatar viliy avatar wangsir0624 avatar xsharp avatar xueron avatar yyz26371945 avatar zqhong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fastd's Issues

Application . 加载问题

bootstrap初始化,在注册异常回调和增加logger服务中间发生异常,会获取不到logger服务

[feature request] 配置文件是否可以支持自动加载config目录下的文件?

因为配置在config目录下的配置文件几乎全部都是框架启动所必须的组件,所以为什么不直接帮用户注册进去呢? 我现在是这么干的..

        $dir = app()->getPath().'/config';

        $config = $container->get('config');
        $config->load($dir.'/config.php');

        array_map(function($filename) use(&$config, $dir) {
            $config->merge([
                str_replace('.php', '', $filename) => load("{$dir}/{$filename}")
            ]);
        }, array_diff(
            scandir($dir),
            [
                '.',
                '..',
                'routes.php',
            ]
        ));

        if (file_exists(app()->getPath().'/.env.yml')) {
            $config->merge(load(app()->getPath().'/.env.yml') ?: []);
        }

这样的话兼容了原有的写法,然后 新增加的配置还可以直接使用

Call db transaction,mysql gone away thrown

[2018-10-24 17:29:03] cmsboot.ERROR: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away {"msg":"SQLSTATE[HY000]: General error: 2006 MySQL server has gone away","code":"HY000","file":"/var/www/cmsboot-api/app/src/Lib/Model.php","line":73,"trace":["#0 /var/www/cmsboot-api/app/src/Lib/Model.php(73): PDO->beginTransaction()",

$this->db->pdo->beginTransaction();

Maybe, it is necessary to add transaction methods into the fastd database class. So, it is possible to reconnect to the mysql automatically.

DatabasePool缺少reconnect机制

目前发现一个bug,连接mysql,当框架的db连接的wait时间超过mysql的wait_timeout配置后,框架所有的db连接会不可用。这时通过getConnection($key)其实获取的是一个无效连接,造成数据库操作失败。

你好,公共函数如何规划?

一些公共函数,如随机字符串、加密有函数,计划放src\Server中,在控制器中如何引用

namespace Services;
class UserServer
{
public function random_str(){}
}

你好,中间件对post无效?

你好,中间件对post无效?
route()->post('/abc', 'WelcomeController@welcome')->withMiddleware('validator');

$_GET就就可以
route()->�get('/abc', 'WelcomeController@welcome')->withMiddleware('validator');

你好,如何在model层获取表前缀

1、如何在model层获取表前缀,我要在model层直接$this-db->query($sql),所以要用到表前缀
2、直接query SQL语句,可以防止注入吗?

注释路由bug

注释路由重复调用,命令行debug无法显示路由命

/**
     * @Route("/page/{page}", name="api_articles_page", defaults={"page": 1})
     * @Formats(["json"])
     * @Methods(["GET"])
     *
     * @param Request $request
     * @param int     $page
     * @return Response|string
     */
    public function articlesAction(Request $request, $page = 1)
    {
        return $this->response(["msg" => 'hello world']);
    }

关于API版本问题

请教一个问题,有时候我们给出去的API接口可能会存在 1.0 版本、2.0版本等不同版本,这种情况下您建议怎么做呢?是新开一个接口或者其他什么呢?

框架不支持用Nginx的反向代理接收请求

我将框架升级到最新之后,发现一直报错
PHP Fatal error: Uncaught InvalidArgumentException: The source URI string appears to be malformed in /home/www/log-api/vendor/fastd/http/src/Uri.php:400
然后追查后发现,是因为调用ServerRequest::createUriFromGlobal函数时,生成的uri错误,缺失了host信息
进一步追查发现,这个问题只有在启用nginx反向代理转发请求才会发生,而直接请求发送到框架是没问题的
最后,发现swoole_http_request对象,如果启用了nginx反向代理
那么header里的host值即为ip
image

如果直接发送,则是ip:port的形式
image

以下代码获取host变量的时候就会存在问题,反向代理直接为null
image
所以就会引发bug

消息队列如何使用

你好,有这样一个需求,批量给APP推送消息,因为量比较大想用消息队列做,该如何实现,谢谢

路由RESTful 设置问题

Server: fast-d(3.1)
App version 2.0.0 (dev)
Swoole version 1.9.10

Fatal error: Uncaught Error: Class 'UserController' not found
$vendor/fastd/routing/src/RouteMiddleware.php:48

$route = route();

$route->get('/', 'IndexController@index');

$route->group('/user', function ($route) {
    $route->get('/', 'UserController@get');
    $route->post('/', 'UserController@post');
    $route->put('/', 'UserController@put');
    $route->delete('/', 'UserController@delete');
});

get、post没问题,put、delete就报错

有sf的影子

嗯嗯,确实还是有那么一点,只是有那么一点点啦,没有sf那么神,因为有参照过symfony和laravel来做。当然会慢慢发展自己的风格。

fdb schema 主键默认值

主键递增,不应该出现默认值.

CREATE TABLE `api_downloads` (
`id` int(11)  NOT NULL DEFAULT "0" AUTO_INCREMENT COMMENT "",
`name` varchar(32)  NOT NULL DEFAULT ""  COMMENT "",
`url_cn` varchar(100)  NOT NULL DEFAULT ""  COMMENT "",
`url_ios` varchar(100)  NOT NULL DEFAULT ""  COMMENT "",
`url_gm` varchar(100)  NOT NULL DEFAULT ""  COMMENT "",
`create_at` int(10)  NOT NULL DEFAULT "0"  COMMENT "",
`update_at` int(10)  NOT NULL DEFAULT "0"  COMMENT "",
PRIMARY KEY (`id`)
) ENGINE InnoDB CHARSET utf8 COMMENT "";

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

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

php bin/server start

文档中没有详细描述怎么处理,请问下,出现php bin/server start 报错正确方式应该怎么处理?复制文件还是到指定目录来install?

这个项目会一直维护发展下去吗?

你好,大致看了下文档以及框架结构,感觉非常棒。

想在实际项目中使用,不过要确定的一下,这个项目会一直维护发展下去吗?

关于 raw 数据的获取

最近在用dobee开发一些功能,发现通过$request->getParsedBody()方法拿不到Content-Type:application/json提交过来的数据.

建议在这种情况下是否可以将raw中的数据直接复制给$_POST获取参数?

另外提交pr的话是提交到这个仓库么? 还是提交至组件由你来更新项目依赖

关于多HTTP/WEBSOCKET服务监听的问题

(1)如果主服务是tcp,想再监听HTTP,也是可以的,需要在port中设置启用http即可,同理,websocket启用websocket即可。但是需要在port中实现对应的处理逻辑。
(2)您的框架在主服务是http或websocket时,想在port再监听一个http或websockt时,您的swoole\server.php handleCallback()中,不能添加onrequest回调。因为$callbacks = ['onConnect', 'onClose', 'onReceive', ]。这个地方不太理解您的用意。望能解释一下,为何这里限制。

框架启动时,会初始化大量的db连接,感觉设计不太合理

框架启动时,会自动初始化大量db连接,数目=worker+task_worker的总和,这样会造成一个问题,当大批量机器部署时,框架启动时很容易就超过数据库配置的默认最大连接数,导致在一段时间内不会接受新的连接,这块是不是能再优化下?

DatabasePool在实例database时存在不足

database继承Medoo,Medoo在实例PDO时有option、cammand等参数,比如option用于PDO::setAttribute()来设定PDO的一些预常量,常见的如$this->pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION),在$db->exec($query)时如果$query错误才会抛出异常。建议在pool实例database时加入
'option' => isset($config['option']) ? $config['option'] : ''等Medoo配置

如何在 Controller 以正确的姿势 header 信息?

hi,好,这不是一个 issue。
如题。

目前的做法是新建一个 Class 继承 \FastD\Application,然后覆写 run() 方法,比如:

	$request = ServerRequest::createServerRequestFromGlobals(); // 原有代码
	$response = $this->handleRequest($request); // 原有代码

	// 在这里增加 header 动作,具体 header 信息在 Controller 中设置,通过一个 Container 暂存 header 信息
	$response = $response->withHeaders(...);

	$this->handleResponse($response); // 原有代码
	return $this->shutdown($request, $response); // 原有代码

还有一种方法,就是通过 middleware 实现,在 Dispatcher::before() 中执行,但感觉对使用者也不友好。

不知道是否有更好的方式?

english documentation

Is there any chance that we can see English documentation ?
After awesome swoole extension many users around the world need to how to use fastd or other repositories ?

你好,路由找不到,已经配置了

路由配置
route()->post('/myschedule', 'ScheduleController@schedule_running');//计划任务

报错信息

{
    "msg": "Route \"/%08myschedule\" is not found.,File=endor/fastd/routing/src/RouteCollection.php,Line=276",
    "code": 404
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.