🚀 PHP Microservice Full Coroutine Framework

Overview

swoft-logo

Latest Stable Version Build Status Docker Build Status Php Version Swoole Version Swoft Doc Swoft License Gitter

start-http-server

PHP microservice coroutine framework

中文说明

Introduction

Swoft is a PHP microservices coroutine framework based on the Swoole extension. Like Go, Swoft has a built-in coroutine web server and a common coroutine client and is resident in memory, independent of traditional PHP-FPM. There are similar Go language operations, similar to the Spring Cloud framework flexible annotations, powerful global dependency injection container, comprehensive service governance, flexible and powerful AOP, standard PSR specification implementation and so on.

Through three years of accumulation and direction exploration, Swoft has made Swoft the Spring Cloud in the PHP world, which is the best choice for PHP's high-performance framework and microservices management.

Feature

  • Built-in high performance network server(Http/Websocket/RPC/TCP)
  • Flexible componentization
  • Flexible annotation function
  • Diversified command terminal(Console)
  • Powerful Aspect Oriented Programming(AOP)
  • Perfect Container management, Dependency Injection (DI)
  • Flexible event mechanism
  • Implementation of HTTP message based on PSR-7
  • Event Manager Based on PSR-14
  • Middleware based on PSR-15
  • Internationalization(i18n) support
  • Simple and efficient parameter validator
  • High performance connection pool(Mysql/Redis/RPC),Automatic reconnection
  • Database is highly compatible Laravel
  • Cache Redis highly compatible Laravel
  • Efficient task processing
  • Efficient seconds crontab
  • Process pool
  • Flexible exception handling
  • Powerful log system
  • Service registration & discovery
  • Service breaker
  • Service restrictions
  • Service fallback
  • Configuration Center
  • Apollo
  • Consul

Document

Discuss

Requirement

Install

Composer

composer create-project swoft/swoft swoft

Start

  • Http Server
[root@swoft swoft]# php bin/swoft http:start
  • WebSocket Server
[root@swoft swoft]# php bin/swoft ws:start
  • RPC Server
[root@swoft swoft]# php bin/swoft rpc:start
  • TCP Server
[root@swoft swoft]# php bin/swoft tcp:start
  • Process Pool
[root@swoft swoft]# php bin/swoft process:start

Core Components

Component Name Packagist Version
swoft-annotation Latest Stable Version
swoft-config Latest Stable Version
swoft-db Latest Stable Version
swoft-framework Latest Stable Version
swoft-i18n Latest Stable Version
swoft-proxy Latest Stable Version
swoft-rpc-client Latest Stable Version
swoft-stdlib Latest Stable Version
swoft-tcp-server Latest Stable Version
swoft-aop Latest Stable Version
swoft-connection-pool Latest Stable Version
swoft-error Latest Stable Version
swoft-http-message Latest Stable Version
swoft-log Latest Stable Version
swoft-redis Latest Stable Version
swoft-rpc-server Latest Stable Version
swoft-task Latest Stable Version
swoft-validator Latest Stable Version
swoft-bean Latest Stable Version
swoft-console Latest Stable Version
swoft-event Latest Stable Version
swoft-http-server Latest Stable Version
swoft-process Latest Stable Version
swoft-rpc Latest Stable Version
swoft-server Latest Stable Version
swoft-tcp Latest Stable Version
swoft-websocket-server Latest Stable Version

Extension Components

Component Name Packagist Version
swoft-apollo Latest Stable Version
swoft-breaker Latest Stable Version
swoft-crontab Latest Stable Version
swoft-consul Latest Stable Version
swoft-limiter Latest Stable Version
swoft-view Latest Stable Version
swoft-whoops Latest Stable Version

License

Swoft is an open-source software licensed under the LICENSE

Comments
  • swoft 2.0 开发意见收集

    swoft 2.0 开发意见收集

    swoft 2.0 开发意见收集

    鉴于1.0的规划过于庞大,一些组件其实很少人使用,开发团队感觉维护困难。

    决定开发2.0:

    • 全协程化: swoole 4.3+, php 7.1+
    • 重心调整:核心团队首先专注基础框架和核心组件的开发维护
    • 其他组件的重心放低,鼓励社区和感兴趣的人开发维护
    • 有更充足的时间编写单元测试和相关文档

    这里做一些意见收集

    • 那些是你认为的核心组件?
    • 在使用中有哪些不足或者没有你希望的效果?
    • 对一些核心功能,希望怎么改进?或有什么建议?

    去除的功能:

    • auto reload 极大的增加了框架启动逻辑复杂度
    • defer(getResult) 很少人使用
    • 框架核心,不再提供服务注册和发现这一套(待定)。
    • 不再提供redis 前缀支持
    • 不再提供定时任务(分布式任务系统扩展)
    • 不再提供session支持

    需改进的功能:

    • 注解扫描将会重构
    • 改进和简化组件的注册
    • 验证将会重构,简化使用 (@jqcool )
    • 路由将会改进: 支持命名路由
    • 关于开发时自动重启:提供一个 swoft-cli 它来监控项目变动,发送重启信号
    • 数据库ORM大体会和laravel使用一样
    • rpc 协议支持适配器,默认提供 jsonrpc 适配器,用户可以根据接口实现自己需要的协议 (@herojhc )
    • config 支持常用的配置格式(yaml json)
    • bean的注册和收集将会做一些调整
      • 增加支持别名
      • 数组方式配置支持添加bean选项(支持别名,作用域设置)
    • 提供测试辅助工具库 更方便编写单元测试
    • 异常处理优化

    新增的功能:

    • 进程池的封装
    • 迁移脚本
    discussion 
    opened by inhere 149
  • docker-compose up 启动失败,导致项目启动失败(附上log)

    docker-compose up 启动失败,导致项目启动失败(附上log)

    | Q | A | ------------------- | ----- | Bug report? | yes | Feature request? | no | Runtime environment | Win10/Docker 19.03

    Describe the bug

    1. 启动日志:
    λ docker-compose.exe up
    Creating network "swoft_default" with the default driver
    Creating redis-srv ... done
    Creating mysql-srv ... done
    Creating swoft-srv ... done
    Attaching to redis-srv, mysql-srv, swoft-srv
    mysql-srv | 2020-02-21 14:56:40+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian9 started.
    mysql-srv | 2020-02-21 14:56:42+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
    mysql-srv | 2020-02-21 14:56:42+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian9 started.
    redis-srv | 1:C 21 Feb 14:56:40.878 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    redis-srv | 1:C 21 Feb 14:56:40.878 # Redis version=4.0.14, bits=64, commit=00000000, modified=0, pid=1, just started
    redis-srv | 1:C 21 Feb 14:56:40.878 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
    redis-srv | 1:M 21 Feb 14:56:40.883 * Running mode=standalone, port=6379.
    redis-srv | 1:M 21 Feb 14:56:40.883 # Server initialized
    redis-srv | 1:M 21 Feb 14:56:40.883 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
    redis-srv | 1:M 21 Feb 14:56:40.883 * Ready to accept connections
    swoft-srv |
    swoft-srv | Warning: require(/var/www/swoft/vendor/autoload.php): failed to open stream: No such file or directory in /var/www/swoft/bin/bootstrap.php on line 12
    swoft-srv |
    swoft-srv | Fatal error: require(): Failed opening required '/var/www/swoft/vendor/autoload.php' (include_path='.:/usr/local/lib/php') in /var/www/swoft/bin/bootstrap.php on line 12
    mysql-srv | 2020-02-21T14:56:43.195005Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
    mysql-srv | 2020-02-21T14:56:43.197134Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 1
    swoft-srv |
    swoft-srv | Warning: require(/var/www/swoft/vendor/autoload.php): failed to open stream: No such file or directory in /var/www/swoft/bin/bootstrap.php on line 12
    swoft-srv |
    swoft-srv | Fatal error: require(): Failed opening required '/var/www/swoft/vendor/autoload.php' (include_path='.:/usr/local/lib/php') in /var/www/swoft/bin/bootstrap.php on line 12
    swoft-srv exited with code 255
    swoft-srv |
    swoft-srv | Warning: require(/var/www/swoft/vendor/autoload.php): failed to open stream: No such file or directory in /var/www/swoft/bin/bootstrap.php on line 12
    swoft-srv |
    swoft-srv | Fatal error: require(): Failed opening required '/var/www/swoft/vendor/autoload.php' (include_path='.:/usr/local/lib/php') in /var/www/swoft/bin/bootstrap.php on line 12
    mysql-srv | 2020-02-21T14:56:46.448978Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
    mysql-srv | 2020-02-21T14:56:46.519028Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
    swoft-srv exited with code 255
    mysql-srv | 2020-02-21T14:56:46.846956Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.19'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.
    mysql-srv | 2020-02-21T14:56:46.942302Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060
    swoft-srv |
    swoft-srv | Warning: require(/var/www/swoft/vendor/autoload.php): failed to open stream: No such file or directory in /var/www/swoft/bin/bootstrap.php on line 12
    swoft-srv |
    swoft-srv | Fatal error: require(): Failed opening required '/var/www/swoft/vendor/autoload.php' (include_path='.:/usr/local/lib/php') in /var/www/swoft/bin/bootstrap.php on line 12
    swoft-srv exited with code 255
    swoft-srv |
    swoft-srv | Warning: require(/var/www/swoft/vendor/autoload.php): failed to open stream: No such file or directory in /var/www/swoft/bin/bootstrap.php on line 12
    swoft-srv |
    swoft-srv | Fatal error: require(): Failed opening required '/var/www/swoft/vendor/autoload.php' (include_path='.:/usr/local/lib/php') in /var/www/swoft/bin/bootstrap.php on line 12
    swoft-srv exited with code 255
    swoft-srv |
    swoft-srv | Warning: require(/var/www/swoft/vendor/autoload.php): failed to open stream: No such file or directory in /var/www/swoft/bin/bootstrap.php on line 12
    swoft-srv |
    swoft-srv | Fatal error: require(): Failed opening required '/var/www/swoft/vendor/autoload.php' (include_path='.:/usr/local/lib/php') in /var/www/swoft/bin/bootstrap.php on line 12
    swoft-srv exited with code 255
    swoft-srv |
    swoft-srv | Warning: require(/var/www/swoft/vendor/autoload.php): failed to open stream: No such file or directory in /var/www/swoft/bin/bootstrap.php on line 12
    swoft-srv |
    swoft-srv | Fatal error: require(): Failed opening required '/var/www/swoft/vendor/autoload.php' (include_path='.:/usr/local/lib/php') in /var/www/swoft/bin/bootstrap.php on line 12
    swoft-srv exited with code 255
    
    1. docker 运行情况
    λ docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           PORTS                                NAMES
    04752fad9a24        swoft/swoft         "docker-php-entrypoi…"   4 hours ago         Restarting (255) 9 seconds ago                                        swoft-srv
    1047cfc46d04        mysql               "docker-entrypoint.s…"   4 hours ago         Up 3 minutes                     33060/tcp, 0.0.0.0:13306->3306/tcp   mysql-srv
    82b0bbcad51c        redis:4-alpine      "docker-entrypoint.s…"   4 hours ago         Up 3 minutes                     0.0.0.0:16379->6379/tcp              redis-srv
    

    根据这个issue #361 的描述。我应该是进去 compose install 一下,可是我的 swoft-srv 容器是启动不了的。

    question: install/start question: usage question: resolved 
    opened by yexk 21
  • 建议增加配置让用户自己决定是否把QueryBuilder查出的数据的字段名称转化为驼峰命名

    建议增加配置让用户自己决定是否把QueryBuilder查出的数据的字段名称转化为驼峰命名

    Details

    swoft的实体使用是要逼死强迫症,查出来的字段下划线命名强制转化为驼峰,然后使用where条件查询又要转回去使用下划线命名的字段,能不能统一一下?要么全部转,要么都不转。建议增加配置让用户自己决定是否转化字段名称

    // where使用created_at是必须用数据库原字段名
    $data = User::query()->where('created_at', '2018-09-09 11:12:34', '>')->get()->getResult()->toArray();
    
    // 查出数据后如果要使用created_at字段,必须使用驼峰
    $createdAt = $data[0]['createdAt'];
    

    希望能改成下面这样

    // where使用created_at是必须用数据库原字段名
    $data = User::query()->where('created_at', '2018-09-09 11:12:34', '>')->get()->getResult()->toArray();
    
    $createdAt = $data[0]['created_at'];
    
    // 或者
    $data = User::query()->where('createdAt', '2018-09-09 11:12:34', '>')->get()->getResult()->toArray();
    
    $createdAt = $data[0]['createdAt'];
    
    suggestion 
    opened by jqhph 20
  • Rpc 的控制器无法属性注入问题

    Rpc 的控制器无法属性注入问题

    swoft1.0 Http控制器的属性注入在 框架初始化的时候是能够注入成功的,能够拿到连接的 Rpc控制器的属性注入@ Reference 注入连接池,在框架初始化后拿到的代理 通过打印发现没有注入成功,依然是null ,但是Http控制器是注入成功的, 例子: 官网的 demoservice2(Rpc 客户端连接池) 在Http 下的RpcController 下是可以注入成功的,但是 在Rpc的DemoSservice 里是拿到不到user的连接的,底层打印也是null 是不是在依赖注入那里判断有问题?

    bug unsupported 
    opened by brewlin 18
  • mysql事务问题

    mysql事务问题

    mysql连接池一段时间不使用 再次使用的时候 不用事务没问题 用事务的commit rollback会出现问题 line=>206 There is no active transaction file/home/swoftendor/swoftc/Driver/Mysql/SyncMysqlConnection.phpArray0

    question: usage 
    opened by yangjieqq 17
  • 开发一个命令行的composer

    开发一个命令行的composer

    | Q | A | ------------------- | ----- | Bug report? | yes/no | Feature request? | yes/no | Swoft version | x.y.z | Swoole version | x.y.z (by php --ri swoole) | PHP version | x.y.z (by php -v) | Runtime environment | Win10/Mac/CentOS 7/Ubuntu/Docker etc.

    Details

    Describe what you are trying to achieve and what goes wrong.

    // paste output here
    

    Provide minimal script to reproduce the issue

    // paste code
    

    在本地开发 放到vendor/swoft下面就可以看到命令 然后 包推到线上以后再安装,这时是没有装到swoft文件下面的 命令行就找不到命令了

    question 
    opened by 256mywind 15
  • update无法更新json数据

    update无法更新json数据

    | Q | A | ------------------- | ----- | Bug report? | yes | Feature request? | no | Swoft version | 2.0.3 | Swoole version | 4.3.5 | PHP version | 7.3.5 | Runtime environment | CentOS 7

    Details

    执行update更新json数据无法更新

    $test = DB::table('personnel_details')
           ->where('id', 20)
           >update(['extend->lj_user_id' => json_encode('dsdfsdf')]);
     var_dump($test); //int(0)
    

    但是直接执行sql就能执行成功

    $test = DB::update("update `personnel_details` set `extend` = json_set(`extend`, '$.\"lj_user_id88\"', \"dsdfsdf\") where `id` = ?",[20]);
     var_dump($test); //int(1)   
    

    进入swoft\db\src\Connection\Connection.php 498行,update打印后发现

        public function update(string $query, array $bindings = []): int
        {
            //绑定数据多了一个update的值
            var_dump($query);  //string(106) "update `personnel_details` set `extend` = json_set(`extend`, '$."lj_user_id88"', "dsdfsdf") where `id` = ?"
            var_dump($bindings); //array(2) {  [0]=> string(9) ""dsdfsdf"" [1]=>  int(20)}
            return $this->affectingStatement($query, $bindings);
        }
    

    怎么解决?就用原生?还有一个问题就是如果json字段为null是无法update的

    "update `personnel_details` set `extend` = json_set(`extend`, '$."lj_user_id88"', "dsdfsdf") where `id` = 20"//无法更新
    "update `personnel_details` set `extend` = json_set('{}', '$."lj_user_id88"', "dsdfsdf") where `id` = 20"//可以更新成功
    
    bug bug: fixed 
    opened by SuKerd 14
  • 调用同名模型与实际使用模型错误

    调用同名模型与实际使用模型错误

    | Q | A | ------------------- | ----- | Bug report? | yes | Feature request? | yes/no | Swoft version | 2.0 | Swoole version | 4.3 | PHP version | 7.3 | Runtime environment | Mac.

    Details

    Describe what you are trying to achieve and what goes wrong.

    App\Rpc\Service\UserService  
    ues App\Model\User 
    实际调用的是 App\Model\Entity\User
    App\Model\User 改为 User4 调用正常
    
    question 
    opened by deepsea-tyy 14
  • 应用日志配置使用json时,记录到file中的日志会丢失用户传递的context和extra参数

    应用日志配置使用json时,记录到file中的日志会丢失用户传递的context和extra参数

    | Q | A | ------------------- | ----- | Bug report? | yes | Feature request? | no | Swoft version | 2.0.4-beta | Swoole version | 4.4.1 | PHP version | PHP: 7.3.6 | Runtime environment | CentOS 7 VM

    Details

    When using JSON with log configuration, logs recorded in files lose context and extra parameters

    app/bean.php

    return [
        'lineFormatter'      => [
            'format'     => '%datetime% [%level_name%] [%channel%] [%event%] [tid:%tid%] [cid:%cid%] [traceid:%traceid%] [spanid:%spanid%] [parentid:%parentid%] [context:%context%] %messages%',
            'dateFormat' => 'Y-m-d H:i:s',
        ],
        'noticeHandler'      => [
            'class'     => FileHandler::class,
            'logFile'   => '@runtime/logs/notice.log',
            'formatter' => \bean('lineFormatter'),
            'levels'    => 'notice,info,debug,trace',
        ],
        'applicationHandler' => [
            'class'     => FileHandler::class,
            'logFile'   => '@runtime/logs/error.log',
            'formatter' => \bean('lineFormatter'),
            'levels'    => 'error,warning',
        ],
        'logger'            => [
            'flushRequest' => true,
            'enable'       => true,
            'json'         => true,
            'handlers'     => [
                'application' => \bean('applicationHandler'),
                'notice'      => \bean('noticeHandler'),
            ],
        ],
        ... 
    ];
    

    usage

    Log::getLogger()->info('this info log', ['hello' => 'world']);
    

    result in swoft\runtime\logs\notice.log

    {"messages":"trace[PhpHelper.php:51] this info log","level":200,"level_name":"info","channel":"swoft","datetime":"2019-07-21 05:55","event":"request","tid":7,"cid":7,"traceid":"","spanid":"","parentid":""}
    
    unconfirmed 
    opened by newpurr 13
  • Swoft\\Db\\Helper\\EntityHelper::listToEntity() must be of the type array, boolean given

    Swoft\\Db\\Helper\\EntityHelper::listToEntity() must be of the type array, boolean given

    | Q | A | ------------------- | ----- | Bug report? | yes | Feature request? | yes | Swoft version | 1.0 | Swoole version | 4.4.0 | PHP version | 7.1.19 | Runtime environment | Mac

    Details

    Describe what you are trying to achieve and what goes wrong.

    Argument 1 passed to Swoft\\Db\\Helper\\EntityHelper::listToEntity() must be of the type array, boolean given, called in /Users/osx/Documents/pprt-parkingpay/parkingpay-server/vendor/swoft/db/src/QueryBuilder.php on line 1506
    

    Provide minimal script to reproduce the issue

    /**
         * 测试方法
         * @RequestMapping(route="register/bing_test",method={RequestMethod::POST,RequestMethod::GET})
         */
        public function bing_test(Request $request)
        {
            MainUser::findOne(['mobile'=>$request->input('mobile')], ['fields'=>['id']])
                ->getResult();
        }
    
    question: usage swoft: db 
    opened by yangtongbing 13
  • RPC Client接收超过64k的数据会丢包

    RPC Client接收超过64k的数据会丢包

    | Q | A | ------------------- | ----- | Bug report? | yes/no | Feature request? | yes/no | Swoft version | x.y.z | Swoole version | x.y.z (by php --ri swoole) | PHP version | x.y.z (by php -v) | Runtime environment | Win10/Mac/CentOS 7/Ubuntu/Docker etc.

    Details

    Describe what you are trying to achieve and what goes wrong.

    // paste output here
    

    Provide minimal script to reproduce the issue

    // paste code
    

    image

    image

    image

    image

    bug 
    opened by chongzi5210 13
  • Update phpunit/phpunit requirement from ^7.5 || ^8.0 to ^9.5.27

    Update phpunit/phpunit requirement from ^7.5 || ^8.0 to ^9.5.27

    Updates the requirements on phpunit/phpunit to permit the latest version.

    Changelog

    Sourced from phpunit/phpunit's changelog.

    [9.5.27] - 2022-MM-DD

    Fixed

    • #5113: PHP error instead of PHPUnit error when trying to create test double for readonly class

    [9.5.26] - 2022-10-28

    Fixed

    • #5076: Test Runner does not warn about conflicting options

    [9.5.25] - 2022-09-25

    Added

    • #5042: Support Disjunctive Normal Form types

    Fixed

    • #4966: TestCase::assertSame() (and related exact comparisons) must compare float exactly

    [9.5.24] - 2022-08-30

    Added

    • #4931: Support null and false as stand-alone types
    • #4955: Support true as stand-alone type

    Fixed

    • #4913: Failed assert() should show a backtrace
    • #5012: Memory leak in ExceptionWrapper

    [9.5.23] - 2022-08-22

    Changed

    • #5033: Do not depend on phpspec/prophecy

    [9.5.22] - 2022-08-20

    Fixed

    • #5015: Ukraine banner unreadable on black background
    • #5020: PHPUnit 9 breaks loading of PSR-0/PEAR style classes
    • #5022: ExcludeList::addDirectory() does not work correctly

    [9.5.21] - 2022-06-19

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  •  Fatal error:

    Fatal error:

    | Q | A | ------------------- | ----- | Bug report? | yes/no | Feature request? | yes/no | Swoft version | x.y.z (by php bin/swoft -V) | Swoole version | x.y.z (by php --ri swoole) | PHP version | x.y.z (by php -v) | Runtime environment | Win10/Docker docker-compose up Fatal error: require(): Failed opening required '/var/www/swoft/vendor/autoload.php' (include_path='.:/usr/local/lib/php') in /var/www/swoft/bin/bootstrap.php on line 12

    opened by jlinw 1
  • 异常Pool error is Swoft\\Connection\\Pool\\AbstractPool::popByChannel(): Send of 5 bytes failed with errno=32

    异常Pool error is Swoft\\Connection\\Pool\\AbstractPool::popByChannel(): Send of 5 bytes failed with errno=32

    | Q | A | ------------------- | ----- | Bug report? | yes | Feature request? | no | Swoft version | 2.0.11 | Swoole version | 4.8.8 | PHP version | 7.2.34 | Runtime environment | CentOS 7

    Describe the bug 当我在swoft配置了一主两从,在并发的时候会出现Pool error is Swoft\Connection\Pool\AbstractPool::popByChannel(): Send of 5 bytes failed with errno=32。导致我的订单没有写入。然而我去掉swoft主从配置选择用一台主库去跑又没有出现该类似情况

    image

    swoft: config 
    opened by mrainyo 1
  • redis pool use hscan problem

    redis pool use hscan problem

    | Q | A | ------------------- | ----- | Bug report? | yes | Feature request? | no | Swoft version | 2.0.11 | Swoole version | 4.8.9 | PHP version | 7.3.31 | Runtime environment |Ubuntu

    Details

    redis pool use hscan,but the iterator not change

                var_dump('hscan----------------------');
                $iterator = null;
    
    //         use \Redis (right)
                $redis = new \Redis();
                $redisBean = \Swoft::getBean('redis');
                $redis->pconnect($redisBean->getHost(), $redisBean->getPort());
                !empty($redisBean->getPassword()) && $redis->auth($redisBean->getPassword());
                $redis->select($redisBean->getDatabase());
                $redis->setOption(\Redis::OPT_SCAN,\Redis::SCAN_RETRY);
                $redis->hScan(config('redisKey.uidFdRelation'), $iterator,'*',10);
                var_dump($iterator);
    
    //use \Redis (right) output
    //string(27) "hscan----------------------"
    //int(320)
    
    
    
    //            use pool(wrong)
    //            $this->redisDb->setOption(\Redis::OPT_SCAN,\Redis::SCAN_RETRY);
    //            $this->redisDb->hScan(config('redisKey.uidFdRelation'), $iterator,'*',20)
    //           var_dump($iterator);
    
    //use swoft redis pool (wrong) output
    //string(27) "hscan----------------------"
    //NULL
    
    swoft: db swoft: config 
    opened by azhuang321 0
  • 官网无法访问?

    官网无法访问?

    | Q | A | ------------------- | ----- | Bug report? | yes/no | Feature request? | yes/no | Swoft version | x.y.z (by php bin/swoft -V) | Swoole version | x.y.z (by php --ri swoole) | PHP version | x.y.z (by php -v) | Runtime environment | Win10/Mac/CentOS 7/Ubuntu/Docker etc.

    Describe the bug A clear and concise description of what the bug is.

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots If applicable, add screenshots to help explain your problem.

    Details

    Describe what you are trying to achieve and what goes wrong.

    // paste output here
    

    Provide minimal script to reproduce the issue

    // paste code
    
    opened by garenlyu1993 1
Releases(v2.0.11)
  • v2.0.11(May 8, 2021)

    Change Log

    Fixed

    • fix type error on throw db exception https://github.com/swoft-cloud/swoft-component/commit/ee5814523fa505a576029f5e58edd88889b9e708
    • fix: Redis::scan 方法 迭代值不返回问题修复 https://github.com/swoft-cloud/swoft-component/commit/e6b3304e2e412b9efd2b9bdc7a49d454dd90cf83
    • fix. PDOException的code可能为字符串 https://github.com/swoft-cloud/swoft-component/commit/2e82980a4a770014fd99e6c13e67807c542da091
    • fix: Class 'Swoole\Coroutine' not found https://github.com/swoft-cloud/swoft-component/commit/2340d5a10fd92354a1944a09a8f61a725ae228aa
    • fix. Redis释放连接时的内存泄漏 https://github.com/swoft-cloud/swoft-component/commit/b9a3b8c8f5e2d6fa00453a2b19b03cb27c813f12
    • fix swoole version error https://github.com/swoft-cloud/swoft-component/commit/671049bb7c2b634bdd16545e97a51f2e7b5fee5f
    • fix unit test error for config https://github.com/swoft-cloud/swoft-component/commit/c29940c9890afdcf521bc09c025402de606f65ff
    • fix unit test error for config yaml https://github.com/swoft-cloud/swoft-component/commit/757ed9f84f9d340edbaf9a4326994b3ff59cf110
    • fix unit test error for framework https://github.com/swoft-cloud/swoft-component/commit/2de84396a4716603cae3e056a5cf88814f87b2f5
    • fix unit test error https://github.com/swoft-cloud/swoft-component/commit/0214904da72181a96c85ccd3399d068c8555b1ab
    • fix task test error https://github.com/swoft-cloud/swoft-component/commit/e658da8921fee6cc77fbebec86580472b50896b3
    • fix: php8 Compilation failed: unrecognized character https://github.com/swoft-cloud/swoft-component/commit/cbd4ba5bd1756ccbdd33556fa106e1d299f7fa5d
    • fix unit test method is error https://github.com/swoft-cloud/swoft-component/commit/7df85aa92b2f53b5fa81254366de1ebd6385f115
    • fix: unit tests eror https://github.com/swoft-cloud/swoft-component/commit/faf1594c04ed50cd896c380ae58300f1f472f9ae
    • fix: swoft-cloud/swoft/issues/1373 rpc class error on use multi pool https://github.com/swoft-cloud/swoft-component/commit/d1c090bf08070127d0bbbd142897a96a24c0afee
    • up: cs fix for the stdlib package https://github.com/swoft-cloud/swoft-component/commit/1c469f7abc3b27d2ba9442ed9b925aa85d77c5fe
    • up: run cs fixer for redis package https://github.com/swoft-cloud/swoft-component/commit/f93faf71f1c768358b49719807451c2f45e324b4

    Update

    • Update php.yml https://github.com/swoft-cloud/swoft-component/commit/5f30a8e13f5ae40cb972fc26d5ae6eaf5e8772ba
    • Update MockHttpResponse.php https://github.com/swoft-cloud/swoft-component/commit/b35c1f996c12c41d5de623ee98567eae9309495c
    • Update MockResponse.php https://github.com/swoft-cloud/swoft-component/commit/66835fa92b7a202a3c40d2838cd28f1f583fc1e4
    • update. PIPE_MESSAGE事件结束后触发COROUTINE_DEFER, COROUTINE_COMPLETE https://github.com/swoft-cloud/swoft-component/commit/8ba3c8d97c63aa47f63cdf6f3cd90bf9ed4ecc0f
    • update for swoole install https://github.com/swoft-cloud/swoft-component/commit/e3154b1d4e8916f5081aa20002e38655e9f59f6f
    • up: add new version to all composer.json https://github.com/swoft-cloud/swoft-component/commit/8c7b47b687689f242897e7336c3681a1c9cab320
    • up: update the phpunit version https://github.com/swoft-cloud/swoft-component/commit/000e94118897972eb16530f82e37b81f66ef0a01
    • up: add github action for tests https://github.com/swoft-cloud/swoft-component/commit/0c92ee31070579746f995fe3918efdc89768e4bd
    • update: use expectException() instead of @expectedException https://github.com/swoft-cloud/swoft-component/commit/090241bbc4d331440f4d90a11410390a599cf501
    • update some for action config https://github.com/swoft-cloud/swoft-component/commit/53dad7f330b6b5ef71a607907510b6343132324e
    • update readme https://github.com/swoft-cloud/swoft-component/commit/a159af849882420f736faf35c5246dcc183ac386
    • up: optimize log for output json https://github.com/swoft-cloud/swoft-component/commit/2a5774da84e0a6c79a94ba47ac4368de52b08bd4

    Feature

    • new: add github action for relase version https://github.com/swoft-cloud/swoft-component/commit/77a44ec9044b5fc88c9646bc039732fb5e186ffe

    Other

    • trigger ci tests https://github.com/swoft-cloud/swoft-component/commit/5dfe9325dc3bf940a634d3a1a04dc06302359c98
    • run php-cs-fixer for the src/redis/src https://github.com/swoft-cloud/swoft-component/commit/82be8fc5b27f597b49e29506bef4ad1386ddccbf
    Source code(tar.gz)
    Source code(zip)
  • v2.0.10(Sep 27, 2020)

    Change Log

    Fixed

    • fix: swoft-cloud/swoft/issues/1222 compatible ws setting open_websocket_close_frame https://github.com/swoft-cloud/swoft-component/commit/e6428a5603e5670619f4c42cbe28b7a638aea3d1
    • fix: swoft-cloud/swoft/issues/1146 add try catch for coroutine complete handle https://github.com/swoft-cloud/swoft-component/commit/da237cb75e5d213d7c4562fc5923667d56a69a06
    • fix: swoft-cloud/swoft/issues/1266 https://github.com/swoft-cloud/swoft-component/commit/18aeabfa893fc66a109e6b79940ebe7997511bbe
    • fix some error for ws server https://github.com/swoft-cloud/swoft-component/commit/4aaed75c5829a830b248ee4fe713ca5e7694f643
    • Closes swoft-cloud/swoft/issues#1274 https://github.com/swoft-cloud/swoft-component/commit/5db6b2f65da8f1b02eb042d2d2b182a6a9c945dd
    • fix: swoft-cloud/swoft/issues/1286 collect params error https://github.com/swoft-cloud/swoft-component/commit/f279153f7524431f2a2e4e7cd138d1fdbc1d866b
    • fix: swoft-cloud/swoft/issues/1290 event error on concurrency requests https://github.com/swoft-cloud/swoft-component/commit/6f50b7deaa3c5f8140dff7a442b15027cc738f37
    • fix getter https://github.com/swoft-cloud/swoft-component/commit/94617f267d1be8489969a0e5caab962b44a53e32
    • fix: swoft-cloud/swoft/issues/1315 not release conn on rpc error https://github.com/swoft-cloud/swoft-component/commit/4a7d7cbc9d3de71c6c98e4f8d9f84a2a8ec51e69
    • fix: swoft-cloud/swoft/issues/1303 rpc ext data key is error https://github.com/swoft-cloud/swoft-component/commit/15bad4375c3a255d3e12f5540a657ad3e8ca19cf
    • fix: Redis::zRangeByScore & Redis::zRevRangeByScore https://github.com/swoft-cloud/swoft-component/commit/00d87b68e7de8716524840e9bb295673cd4f52da
    • Global event listener bug fix. https://github.com/swoft-cloud/swoft-component/commit/f028ba91d4f37556312598ae45d1f1192058d079
    • fix: swoft-cloud/swoft/issues/1312 redis not support select command https://github.com/swoft-cloud/swoft-component/commit/7f08af48683143929f672bda0858d310bff02c08
    • fix command execute https://github.com/swoft-cloud/swoft-component/commit/702ab451f495692fe27d2dad571af8db60579ba7
    • fix batchUpdateIds id is string https://github.com/swoft-cloud/swoft-component/commit/5e314e575d4cf673c8fda47422dc5c415b989c1d
    • fix model hiden field https://github.com/swoft-cloud/swoft-component/commit/5559a7c53f74f54c02f063d08899d0d7b81427f2
    • fix method extends error https://github.com/swoft-cloud/swoft-component/commit/2f1552fb07e091625b610693104010bc338becea
    • run php cs fixer on validator https://github.com/swoft-cloud/swoft-component/commit/ceb167657acb5ee8d5db706719dc69f4031c9f22
    • fix unit tests error for validator https://github.com/swoft-cloud/swoft-component/commit/d9667593187a50d288cfde4f026d06c6f0f0a4f7
    • fix: swoft-cloud/swoft/issues/1334 event name is error https://github.com/swoft-cloud/swoft-component/commit/f5b793d91e5e1946d36ca4dadda99fd62d891c4b
    • fix: swoft-cloud/swoft/issues/1297 rpc client version invalid error https://github.com/swoft-cloud/swoft-component/commit/603fee6463d0f77f72a3ad43a0c2bd7f7faf0abf
    • fix aop tests error https://github.com/swoft-cloud/swoft-component/commit/dfb31ac7f4f54c46ed40b39257f8e365f857342e
    • fix swoft version error https://github.com/swoft-cloud/swoft-component/commit/b124af8d28732b373064e630420ee7ab95822fc9

    Update

    • upgrade travis-ci swoole version to 4.4.16 https://github.com/swoft-cloud/swoft-component/commit/3cae6eac85ca59f4e9f522a9127b69e3b1027765
    • add cookie propertiy SameSite https://github.com/swoft-cloud/swoft-component/commit/db4c3b45a8448cdf48a4c12ad09b36119bc92497
    • update: update the swoole version for .travis.yml https://github.com/swoft-cloud/swoft-component/commit/2f015dafa608733f7eb3eca19abd06e60a0dcfac
    • update: add v2.0.10 for package composer.json https://github.com/swoft-cloud/swoft-component/commit/abdcf6f1279f45d0d4b5c1921a6a74ad046bdaba
    • update some for http route https://github.com/swoft-cloud/swoft-component/commit/0366bd90c7e0b01f53d6fc9df5307077eb0bbed2
    • update some for http routes https://github.com/swoft-cloud/swoft-component/commit/449bf02ac271649517da2846cf7e3a42403658df
    • up: swoft-cloud/swoft/issues/1292 allow use empty string on RequestMapping.route https://github.com/swoft-cloud/swoft-component/commit/36cca2026dd95c018194f9ad15d31c95d50c82de
    • update readme, add issue config file https://github.com/swoft-cloud/swoft-component/commit/3144489f15eccea074e80cae1f176701720de54f
    • update issue config firle https://github.com/swoft-cloud/swoft-component/commit/bcebe932b0e258eb8d9bdc9ef94790a2cdd73d52
    • add:add response property to RpcResponseException.php(issue 1278) https://github.com/swoft-cloud/swoft-component/commit/c9454e1a8b4eed2eb2ce4115d4c199cfde1fd3d9
    • Update RpcResponseException.php https://github.com/swoft-cloud/swoft-component/commit/7c5d26df80194e8f5239ffc5aa3fc597b7bc90dd
    • Update label.yml https://github.com/swoft-cloud/swoft-component/commit/6297b88a3e7f14ed55108db5a375ca2d9b86d3d0
    • update some for ws server https://github.com/swoft-cloud/swoft-component/commit/25de3bf4de1eb5cb27512662104e4d24262cc71d
    • update pr doc file https://github.com/swoft-cloud/swoft-component/commit/ab7f0404e0213f5a62409599041be694489a960f
    • add: Redis method https://github.com/swoft-cloud/swoft-component/commit/7e36d14cf41454c6eea408d94359716690356a57
    • Create Dependabot config file https://github.com/swoft-cloud/swoft-component/commit/d326a4166423466c395433aa022c68309ddde177
    • update some https://github.com/swoft-cloud/swoft-component/commit/9046344a9735ba6391e5f5f8bb8ac0e7ad905e14
    • update some .. https://github.com/swoft-cloud/swoft-component/commit/852e75f25d9cc396e567f5cbeeadf6f75474d8e8
    • add comments for process pool https://github.com/swoft-cloud/swoft-component/commit/29977fa2d6da4f0b7a1b5f13ac3f402ef139e1f3
    • add try-catch for dispatch logic https://github.com/swoft-cloud/swoft-component/commit/a7059bf4b59bd451f5655990ee1e12493e67ac21

    Feature

    • Support to passing variables by reference https://github.com/swoft-cloud/swoft-component/commit/cc44a038efbb03e9dfedd324b3e5c9c9cad13b33

    Other

    • 添加sameSite属性 https://github.com/swoft-cloud/swoft-component/commit/c9a8300c242176db8957d2752ee4a226fe8409b0
    • optimize use in_array function https://github.com/swoft-cloud/swoft-component/commit/b23d273377129728735107fee66ca7b546373283
    • Enable Redis Stream function https://github.com/swoft-cloud/swoft-component/commit/1f3dd832c1fd8dd7abfd73b7955ef4b9d21e33c8
    • No reconnection is made when rpc client receive data has timed out https://github.com/swoft-cloud/swoft-component/commit/70d4f506104f33de3debaea3a1ffd910129c047e
    • Array to Object method https://github.com/swoft-cloud/swoft-component/commit/b9b4ca86640588c9c8c4f0496699b499583775f0
    • Multi dimentional array to single dimentional with preserved structure and vice versa https://github.com/swoft-cloud/swoft-component/commit/eca75e9d9cadee11b41bb0251ab45dd8e250dad8
    • coding standard correction https://github.com/swoft-cloud/swoft-component/commit/bd30fd82e882e20e7f7efab6b8d6f066e1bef33e
    • change redis command check https://github.com/swoft-cloud/swoft-component/commit/fd80b95df7ee4bda11a0ef6e6efde54dad8a1999
    • Reverting stdlib changes https://github.com/swoft-cloud/swoft-component/commit/c593da60444964563f236b5de0b640597a5a0064

    genearte by kite gh changelog v2.0.9 v2.0.10 --no-merges --style gh-release --exclude "cs-fixer,format" --repo-url https://github.com/swoft-cloud/swoft-component

    Source code(tar.gz)
    Source code(zip)
  • v2.0.9(Apr 15, 2020)

    Change Log

    Fixed:

    • The content of the pidfile file may be empty.Check https://github.com/swoft-cloud/swoft-component/commit/20dadbf198f069828a301e4f36a4c0df694976c1
    • Compatible with open_websocket_close_frame setting of websocket server https://github.com/swoft-cloud/swoft-component/commit/e6428a5603e5670619f4c42cbe28b7a638aea3d1
    • Fix the problem that the rpc client cannot set the timeout for reading data https://github.com/swoft-cloud/swoft-component/commit/53e771bd3d360b886c6a4369256017e7dbe08caf
    • Fix the problem that Required verification annotation may be invalid https://github.com/swoft-cloud/swoft-component/commit/d3f5dd2d9e77ace8885e3e2b7b7b961768a3f1b4
    • Fixed the problem of file verification not passing https://github.com/swoft-cloud/swoft-component/commit/15d3f4bfd2a739c9c93cf59474af1b5cfd469af1
    • Fix the problem that the configured websocket middleware may fail https://github.com/swoft-cloud/swoft-component/commit/f4902fff6c1fdecde4a0225797e0b53aae7eaec5
    • Fix the parameter type of calling method in the command line MultiList::show https://github.com/swoft-cloud/swoft-component/commit/58c4e3583072a468a2bf8a4e26ee26b41195304a
    • Fix MySQL 8.0 generated entity primary key location error https://github.com/swoft-cloud/swoft-ext/commit/e437d36bc56d3b9b3abd2b2f9a9476f0e14237f7

    Update:

    • The swoole original process object is saved on the user process class, which is convenient for subsequent use https://github.com/swoft-cloud/swoft-component/commit/eccc718be9eb7fcd7f83d0a4c5a55eac3ec85edf

    Enhancement:

    • Optimize the proxy class generation logic, the same class code only needs to be generated once https://github.com/swoft-cloud/swoft-component/commit/e1f68c04342b2576f8e7aba73086b915eb3219ed
    • Ignore errors that may occur when the db connection is closed https://github.com/swoft-cloud/swoft-component/commit/0b3b7bdbda290a91bba7d86cf4e0da551733f037
    • Add a try-catch to destroy coroutine processing to prevent errors from causing workers to quit https://github.com/swoft-cloud/swoft-component/commit/da237cb75e5d213d7c4562fc5923667d56a69a06
    • The connection pool closes the connection, if the connection has been disconnected, the exception will be ignored https://github.com/swoft-cloud/swoft-component/commit/7aac80da2ecbc11a6b869e4ba2a83284d3fdcab0
    Source code(tar.gz)
    Source code(zip)
  • v2.0.8(Jan 18, 2020)

    Change Log

    Fixed:

    • Fix ws server's message response.finish compatible swoole 4.4.12 issue https://github.com/swoft-cloud/swoft-component/pull/544/commits/d724a949e0f90037eede019ae4d177cec8ae22dd
    • Fix the issue that the value of the option with the short option in the console component is out of sync https://github.com/swoft-cloud/swoft-component/pull/544/commits/ac41ecadd5fd1030ffd0515c858e21c6098c9ba3
    • Fixed some string operations not compatible with php 7.4 https://github.com/swoft-cloud/swoft-component/pull/544/commits/b4d0e903cbf92ca615e79a1b2ea32d8fd94a786b
    • Fix When displaying unknown command, the help information of http server command is incorrect https://github.com/swoft-cloud/swoft-component/pull/544/commits/684807e51bd8bd2be53770a6df30423ca209574a
    • Fix remove invalid debug statements in process component https://github.com/swoft-cloud/swoft-component/pull/544/commits/2bc84aaced6cfa35f4d12a25ab6941fd2e470831
    • The .env file in the same directory cannot be loaded correctly after packaging as phar https://github.com/swoft-cloud/swoft-component/pull/544/commits/8046c156844b59e0a332e47f9e96ce115bb24384
    • Fix psr4 namespace that cannot be excluded from scanning by Application settings https://github.com/swoft-cloud/swoft-component/pull/555/commits/59340887f1bf50039f9e9299941ec3f14a94a4cf
    • Fixed the initial request error when the digital key appeared in the http headers https://github.com/swoft-cloud/swoft-component/pull/554/commits/c1684343710143c6d4cc90d2a1a79d8f47b06fb8
    • Fix log is still writing conting information to memory after disabling, causing memory growth problem https://github.com/swoft-cloud/swoft-component/pull/560/commits/0a51739b3e7917e63cc4ff5e8c694af019b8eb8e
    • Fix log concurrency may cause repeated writing to log https://github.com/swoft-cloud/swoft-component/pull/542/commits/c6b396f6db72a7276bafb9ced7bc5b42fa9d25e0
    • Fix Connection pool not closed, expired connection https://github.com/swoft-cloud/swoft-component/pull/542/commits/53ca5485d61c6eaddf5dac5b2c3e18db0f7b775c

    Update:

    • Adjust the exception thrown when the route is not found will carry the error code https://github.com/swoft-cloud/swoft-component/pull/544/commits/7e06afa86419cd5f0175646615ad18cfaa96882c
    • Adjust the Redis Set method and interface, the usage is exactly the same as phpredis, the third parameter supports the array https://github.com/swoft-cloud/swoft-component/pull/542/commits/503f4df06dcf067afbf5e105027c97a2548c90b2
    • Swoft\Redis\Contract\ConnectionInterface::set Third parameter changed to unlimited type

    Enhancement:

    • Enhanced clog now supports writing logs to files https://github.com/swoft-cloud/swoft-component/pull/542/commits/e88c4d59416fc3439476eb4c25457298e2d0a800
    • Optimized phar package construction speed, packaging time will be greatly reduced now https://github.com/swoft-cloud/swoft-component/pull/544/commits/1055fffc7affc46eda1c2484665f0452917c1ab2
    • Optimize the parsing and binding of console command parameters and options. The type of the setting will be formatted as the corresponding type https://github.com/swoft-cloud/swoft-component/pull/544/commits/7dc0d58108591a152f538ca417201afe148a7bdd
    • Global validation method Added $unfields parameter to the validate method https://github.com/swoft-cloud/swoft-component/pull/556/commits/ca86dc885132953188038f80752d736cd39f961d
    • Adjusted the storage logic of ws and tcp connection, now you can customize the connection session information to a custom driver (such as redis, swoole-table, etc.) https://github.com/swoft-cloud/swoft-component/pull/550/commits/5a52586c5523ab7dee46f5936cf62e9955d8992f
    • Optimized aggregation method supports grouping such as (sum, avg, count), etc. https://github.com/swoft-cloud/swoft-component/pull/542/commits/ab58ffd39fb98fd47f7161a0095b8cdc812b2f9e
    • Optimize entity generation, resolve conflicts with model attributes/methods https://github.com/swoft-cloud/swoft-ext/commit/54be347f32b38b328111b1fe5f7999c09eda9358
    • Add setFetchMode to easily get different types of data in pdo format https://github.com/swoft-cloud/swoft-component/pull/542/commits/31210bfe51cde8114161590392acd745b0aac800
    Source code(tar.gz)
    Source code(zip)
  • v2.0.7(Nov 18, 2019)

    Fixed:

    • When fixing config injection, if the value is not found, the default value of the corresponding type will be used to override the attribute, causing the default value of the attribute to be overwritten https://github.com/swoft-cloud/swoft-component/pull/522/commits/d84d50a76c4c7ff19dc0896868745cfe8f0d93c9
    • Fixed when using the message schedule in ws server, no empty data was filtered, resulting in one more response. Avoid method swoft-cloud/swoft#1002 https://github.com/swoft-cloud/swoft-component/pull/522/commits/d84d50a76c4c7ff19dc0896868745cfe8f0d93c9
    • Fixed when using message scheduling in tcp server, no empty data was filtered, resulting in one more response. https://github.com/swoft-cloud/swoft-component/pull/522/commits/07a01ba1e6ff52baffbc7b2baf997e0e6a07ae04
    • Fixed missing swoft/stdlib library dependencies when using console component independently https://github.com/swoft-cloud/swoft-component/pull/529/commits/c569c81ae15c0b2b73db3a15c457d7b982a06d7f
    • Fixed ArrayHelper::get When the input key is integer, the parameter parameter is incorrect https://github.com/swoft-cloud/swoft-component/pull/528/commits/a44dcad42cbdd20cb4078351a8deb3b966b1ca09
    • Fix console rendering using table, when calculating int value, calculate width report type error https://github.com/swoft-cloud/swoft-component/pull/528/commits/74a835abd78ed58c081668129e723d5e83429398
    • Fixed error in the component user can not customize the default error handling level https://github.com/swoft-cloud/swoft-component/pull/530/commits/4c78aeb3326bfb333227f07b675a2bdfc3b95f0f
    • Fix Enable and disable Component settings isEnable() does not work https://github.com/swoft-cloud/swoft-component/pull/530/commits/da8c51e561074f94ec29a8c5055f563c6ed13cc0
    • Fixes Using the uniqid() method in the cygwin environment must set the second parameter to true https://github.com/swoft-cloud/swoft-component/pull/530/commits/c7f688f4ef07bb7c7d59a0c03888d0c79f77d4c7
    • Fixed Unable to set process title in cygwin environment and cause error https://github.com/swoft-cloud/swoft-component/pull/530/commits/c466f6a3841b6fb58e581d517c2151699ac4cf3e
    • Fixed Unable to delete browser cookie data using http response->delCookie() https://github.com/swoft-cloud/swoft-component/pull/530/commits/8eb9241329e46dcab78e4f18ea4771808a1f034e
    • Fixed ws server message dispatching, the received ext data is not necessarily an array causing an error https://github.com/swoft-cloud/swoft-component/pull/530/commits/ff45b356c709d97bc2937dab8d467e4680d58cf0
    • Fix log file split by time https://github.com/swoft-cloud/swoft-component/pull/533/commits/08c42449cc5ca7922e5bf54d6523b0d8799ba910
    • Fix the log JSON format small problem https://github.com/swoft-cloud/swoft-component/pull/535/commits/a3fc6b94a8afff873f7f3ac8248432ff2a409d13
    • Fixed rpc service provider getList call twice https://github.com/swoft-cloud/swoft-component/pull/535/commits/fd03e71f525c265add11e9334cc6dd505daf62ec
    • Fix redis cluster does not support auth parameter https://github.com/swoft-cloud/swoft-component/pull/525/commits/7a678fd866e3ec842b00f734f7f6c3b7b1a03a9b
    • Fix model query json type, does not support array https://github.com/swoft-cloud/swoft-component/pull/525/commits/6023a99aad06d9e87ff0a38bb4f37242f331a771
    • Fixed redis multi operation not connected in time https://github.com/swoft-cloud/swoft-component/pull/525/commits/e5f69802947ec3d9b56b7d56ec2dc4b1d70b4995
    • Fix redis does not support expireAt, geoRadius https://github.com/swoft-cloud/swoft-component/pull/525/commits/749241561dbb5a6b94c659b2642e255900cb6b69
    • Fix 'crontab' timestamp detection deviation https://github.com/swoft-cloud/swoft-ext/commit/eb08a46833188f49e05b1ea3c041c8a60ff53606

    Update:

    • Update console also emits an event before rendering the help message ConsoleEvent::SHOW_HELP_BEFORE https://github.com/swoft-cloud/swoft-component/pull/522/commits/d3f7bc3c5093a11a1de3710fd239c4375b835160
    • Simplify and unify http, ws, tcp, rpc server management command logic https://github.com/swoft-cloud/swoft-component/pull/522/commits/f202c826b74972775fe97ad91b2c38e5c7d97014
    • Update the ws and tcp Connection classes to add the newFromArray and toArray methods to facilitate exporting information and restoring connections via third-party storage (redis) https://github.com/swoft-cloud/swoft-component/pull/528/commits/a8b0b7c77d56d4392eba75d13a911816b9dc0cee
    • Optimize server to add a unified swoole pipe message event handler, use the swowt event in ws, tcp to handle interprocess messages https://github.com/swoft-cloud/swoft-component/pull/530/commits/1c51a8c82357f52b6f858bcaa58396c521080695

    Enhancement:

    • Now tcp requests support adding global or corresponding method middleware, and the process and usage are similar to http middleware. _ Useful only when using system scheduling _ https://github.com/swoft-cloud/swoft-component/pull/528/commits/6b593877acc5cb78bbd863e08c0559454fb0b59c
    • Now the websocket message request supports adding global or corresponding method middleware, and the process and usage are similar to http middleware. _ Useful only when using system scheduling_ https://github.com/swoft-cloud/swoft-component/pull/530/commits/973981568df4bca18a4858efe1ef7730d903353e
    • Event Management allows setting destroyAfterFire to clean up the data carried in the event after each event dispatch https://github.com/swoft-cloud/swoft-component/pull/530/commits/50bf43d39857fea7328c83a790c941e83847b82b
    • Database error exception added code returns https://github.com/swoft-cloud/swoft-component/pull/533/commits/fd306f470ba171f556bc05682aae58cab217cacc
    • Coroutine file operation writeFile New write failure exception https://github.com/swoft-cloud/swoft-component/pull/533/commits/08c42449cc5ca7922e5bf54d6523b0d8799ba910
    • RPC new parameter verification https://github.com/swoft-cloud/swoft-component/pull/533/commits/8646fc5c64bcfeb84c0c38adb31ff2759a20726d
    Source code(tar.gz)
    Source code(zip)
  • v2.0.6(Sep 20, 2019)

    Fixed

    • Repair the client that uses the current fd as the response message by default when the ws server receives the message https://github.com/swoft-cloud/swoft-component/pull/504/commits/3a8890cfd5a4641042eb7714c6afe65e15b0b461
    • Fixed all connections that the ws server got through the swoole server. The type of fd may not be an integer and cause an error. https://github.com/swoft-cloud/swoft-component/pull/504/commits/0fa79d7e5747d47883a104e2d6ab24c90b745453
    • Fix stdlib SystemHelper will be deleted by Defender in Windows 10 https://github.com/swoft-cloud/swoft-component/pull/505/commits/71c2893c8514e5535b77a3b8bb8b2c225c771c8a
    • Fix increment/decrement and get a more connection https://github.com/swoft-cloud/swoft-component/pull/502/commits/94c7171f57c4d8952fdb0214da27e6e12231fe2d
    • Fix Model property $modelTimestamps is closed invalid https://github.com/swoft-cloud/swoft-component/pull/502/commits/94c7171f57c4d8952fdb0214da27e6e12231fe2d
    • Fix The log was called before initialization, which may cause the context loss error during the startup phase https://github.com/swoft-cloud/swoft-component/pull/504/commits/5a27704f1bd3a056b144e2ecbb4accf1c59680df
    • Fix ws server handshake and open use the same top-level coroutine ID. If one is executed first, it may cause subsequent session loss https://github.com/swoft-cloud/swoft-component/pull/509/commits/c2cd17aaf0989ef9f4a2feaac714e152c1795d8c
    • Fixed after timer passing parameter bug https://github.com/swoft-cloud/swoft-component/pull/508/files
    • Fixed timing task memory leaks and log print data loss issues https://github.com/swoft-cloud/swoft-ext/pull/40/commits/aa6bc3223a4fc7b3cb97ec1f324c257eaa2356bf
    • Optimized Http server sgo processing flow https://github.com/swoft-cloud/swoft-component/pull/507/commits/e60d92e78853a9f0b2e9f823c941bc214c6c409f
    • Fixed database inconsistency caused by reconnection in the case of things https://github.com/swoft-cloud/swoft-component/pull/507/commits/c2e87f278815fd14dbccb71d5f6a63d4f974d38b
    • Fixed Aop extreme case return 0 problem https://github.com/swoft-cloud/swoft-component/pull/511/commits/85bc1b186f125773d55c582ecc40cde9f30c87cf
    • Fixed BeanFactory::createBean() method creation problem https://github.com/swoft-cloud/swoft-component/pull/474/commits/c2e2c894ea17dcb3a0e97cccaff42355b72066f7
    • Fix RPC error data is a string problem https://github.com/swoft-cloud/swoft-component/pull/474/commits/3a346589a81e35a0dd1b2ffc43dcd430153d86c7
    • Fixed redisCluster initialization problem https://github.com/swoft-cloud/swoft-component/pull/515/commits/3a60c063189224a360400f9fcfd9d5cb55bd3587
    • Fixed DbException without throwing Database exception Code https://github.com/swoft-cloud/swoft-component/pull/515/commits/3a60c063189224a360400f9fcfd9d5cb55bd3587
    • Fixed getter and setter hump judgment errors for ModelAttribute https://github.com/swoft-cloud/swoft-component/pull/502/commits/2e2f0f197c64fecfdee82ade45a40ed509ed6108
    • Fix Aggregate aggregate, return string forcibly convert int error https://github.com/swoft-cloud/swoft-component/pull/502/commits/7aa98a6a565236639c9803facf2a4b01bc2adacb
    • Repair model updateCounters method does not synchronize entity data after update https://github.com/swoft-cloud/swoft-component/pull/502/commits/967d6f84e3e1eae4c495e46c5a5edbfa79b5a7fe

    Update

    • Adjust ws server to automatically close the connection when the worker exits, add switch configuration, you can choose whether to open. https://github.com/swoft-cloud/swoft-component/pull/504/commits/3a8890cfd5a4641042eb7714c6afe65e15b0b461
    • ws server new event: MESSAGE_PUSH OPEN_BEFORE MESSAGE_RECEIVE https://github.com/swoft-cloud/swoft-component/pull/504/commits/e1b058340e27e6773a3fbac0daafaffbabea5571

    Enhancement

    • Add new logs to cut by time https://github.com/swoft-cloud/swoft-component/pull/503/commits/f649df2cf6bb7635ae2f0bff8ae8250e4bdecbf3
    • Added log support to pass additional parameters https://github.com/swoft-cloud/swoft-component/pull/503/commits/55d55335f77572611ae0a469f5c848454838fc1f
    • Adjusted and added some ws server related events for users to use https://github.com/swoft-cloud/swoft-component/pull/504/commits/e1b058340e27e6773a3fbac0daafaffbabea5571
    • Model pair Prop support https://github.com/swoft-cloud/swoft-component/pull/502/commits/630aad8315894a993ef9021c23c70eed14e3fa47
    • Added connection pool (mysql/redis/rpc) to initiate initial connection https://github.com/swoft-cloud/swoft-component/pull/507/commits/a3671739863bacf1ba514fbe637e981b19b22b94
    • tcp server supports custom header data packaging and unpacking format when using length packetization https://github.com/swoft-cloud/swoft-component/pull/509/commits/a6fbe93261b2facadd0c9d3384c3abd86e8779dc
    • RPC call error message adjustment https://github.com/swoft-cloud/swoft-component/pull/515/commits/d9226b13e7bf1b3154922439dc4990c8f55de040
    • Added operation Database exception, print console error SQL https://github.com/swoft-cloud/swoft-component/pull/515/commits/3a60c063189224a360400f9fcfd9d5cb55bd3587
    • New operational data migration int series Length support https://github.com/swoft-cloud/swoft-component/pull/502/commits/967d6f84e3e1eae4c495e46c5a5edbfa79b5a7fe
    • Added the original sql method getRawSql https://github.com/swoft-cloud/swoft-component/pull/502/commits/967d6f84e3e1eae4c495e46c5a5edbfa79b5a7fe
    • Extend updateOrInsert and updateOrCreate to support self-incrementing parameters https://github.com/swoft-cloud/swoft-component/pull/502/commits/967d6f84e3e1eae4c495e46c5a5edbfa79b5a7fe

    Extra

    • Swoftcli already supports basic application skeleton and component structure creation, as well as some class file generation functions.
    • SwoftTracker support for easy developer debugging
    Source code(tar.gz)
    Source code(zip)
  • v2.0.5(Aug 6, 2019)

    • Fixing early interrupt request logic may result in incorrect formatting of the corresponding Content-Type (https://github.com/swoft-cloud/swoft-component/pull/493/commits/f03139886a471a0424d236061e8cb30d90b32a89)
    • Fixed the use of sgo to create child coroutines, at the end did not clean up the mapping with the top coroutine (https://github.com/swoft-cloud/swoft-component/pull/493/commits/de11ae5bc63833b80ca491132d156d51b95f6c8d)
    • Fix Xml format parsing method (https://github.com/swoft-cloud/swoft-component/pull/495/commits/24d0038dc644fccf238d9642f049ceb961dd22b3)
    • Fix class proxy Unique string problem (https://github.com/swoft-cloud/swoft-component/pull/495/commits/444ddeb51e0741dda06e8f548f2579cf534bdf30)
    • Fixed context()->get() problem and discard Context::mustGet() method (https://github.com/swoft-cloud/swoft-component/pull/496/commits/6acc1b55163a18edc95de6cdb899398a9a7d0f2e)
    • Fixed interface injection, class name access error (https://github.com/swoft-cloud/swoft-component/pull/496/commits/2d9a31fe1855054055daa6e6e73aeaddfa280900)
    • Repair model uses the paginate method, the result set has no mapping field (https://github.com/swoft-cloud/swoft-component/commit/3027287a58bfa66b3c87b8d2d03fddbfc6c2c754)
    • Fixed websocket server error when there are multiple workers and actively closes non-current worker connections(https://github.com/swoft-cloud/swoft-component/pull/500/commits/7666969f731dce68d395f45749260731eead7bda)

    Update:

    • The default worker num setting is obtained by the swoole_cpu_num function (https://github.com/swoft-cloud/swoft-component/pull/493/commits/553f6500678b258080b84cffeab0fe2d5bf65550)
    • The validator is adjusted to, the default is not required, the user opens (https://github.com/swoft-cloud/swoft-component/pull/496/commits/e5b258db35683e50f4abeba22a2c6fa82dbc7ceb)
    • No longer throws containerException inside the swowt to the user-used layer(https://github.com/swoft-cloud/swoft-component/pull/498/commits/1e74893bf6e05fe954334e527e8b76eca2cef6e9)
    • console output Add interactive methods such as confirm select (https://github.com/swoft-cloud/swoft-component/pull/498/commits/0181138af6f1bc1dc0f3f1025b23d9a6354d122a)

    Enhancement:

    • The console command option sets CommandOption, which now allows options to be described as multiple lines of information (https://github.com/swoft-cloud/swoft-component/pull/493/commits/e591498363dac1888f503ab18766e89542e33665)
    • All messaging methods for websocket server, support for incoming opcode parameter (https://github.com/swoft-cloud/swoft-component/pull/493/commits/dc164ffe97d507e505ac8cd1b50a421a27ae5859)
    • The websocket module allows setting the default opcode of the current module for automatic processing of return data settings opcode (https://github.com/swoft-cloud/swoft-component/pull/493/commits/9e3e9672ed83579e6135ed47ae0c30ef335d8659 )
    • Enhanced websocket related classes, now the message processing method allows to inject more data object types Request Response(https://github.com/swoft-cloud/swoft-component/pull/493/commits/3d6c60b4812535c48d51c57476f801529f66655f )
    • When the worker exits, the websocket server will automatically close all connections (https://github.com/swoft-cloud/swoft-component/pull/498/commits/5ea10ecc4bcf767b374dad9652dd57a4fcfc8fc5)
    • Add Timer timer package (https://github.com/swoft-cloud/swoft-component/pull/495/commits/eb92ee6a7d5e7f2a47e30920a83ed192626b42e3)
    • Add Coroutine Method Package(https://github.com/swoft-cloud/swoft-component/pull/495/commits/d8c2b8848d492fc4b389df6edee595ef8f0e39c5)

    Extra:

    • swoft/crontab Second-level scheduled tasks
    • swoft/whoops A simple wrapper for filp/whoops in swewt that renders and displays error messages that are more conducive to reading.
    Source code(tar.gz)
    Source code(zip)
  • v2.0.4(Jul 19, 2019)

    Enhancement :

    • Swoft\Http\Message\Request Added getHeaderLines() (https://github.com/swoft-cloud/swoft-component/pull/480/commits/74a2a91d62dd4230c8cffca621c95354a251ac82)
    • Aop adds getArgsMap() and getClassName() methods (https://github.com/swoft-cloud/swoft-component/pull/480/commits/c47e785ef40bc65a98fabc81c73ee0099228c3aa)
    • Added srun() function for coroutine scheduling (https://github.com/swoft-cloud/swoft-component/pull/475/commits/3c4a6a41976c4813f8c60b2f5321d0a25d3572dc)
    • Optimize the server event (onStart / onWorkStart / onWorkStop / onShutdown), the event comes with support coroutine (https://github.com/swoft-cloud/swoft-component/pull/475/commits/a8d5a8da82f236d485ac771e8668efa62d8033b9)
    • New Posting Sync Blocking Task (https://github.com/swoft-cloud/swoft-component/pull/480/commits/ec938e556a32849dc62fe7f8eaaab4b13c853279)
    • Added Redis call method for using the same connection operation (https://github.com/swoft-cloud/swoft-component/pull/482/commits/924569877aa3305dbd4ad573e537907a6ed43404)
    • Compatible with swoole 4.4.x

    Fixed :

    • Fixed migration class name is too long, resulting in incomplete record class name (https://github.com/swoft-cloud/swoft-ext/pull/9/commits/58314b87d38b6579eff9123d58713276bc22c913)
    • Fixed update update after updating the field value with Setter after the entity query (https://github.com/swoft-cloud/swoft-component/pull/472/commits/caadf0e9e24e470465656cf46f1199f735ae6358)
    • Fixing the result of deleting the pid file after stop returns an error, causing restart to fail (https://github.com/swoft-cloud/swoft-component/pull/470/commits/2be450bf11db5cab7dc5ac5facfab336a9a59acf)
    • Fixed i18n setting default language does not work (https://github.com/swoft-cloud/swoft-component/pull/478/commits/b401a504e43607be119ae6e97e0633133aabb24c)
    • Fixed ws server can't actively close other workers' connections when there are multiple workers (https://github.com/swoft-cloud/swoft-component/pull/478/commits/271b63988065882da394e1e860b9142061d92aeb)
    • Fixed when the http server received the xml request, the content type could not be matched correctly (https://github.com/swoft-cloud/swoft-component/pull/478/commits/2ff9a4e6181a9e96bbfa2454abab62d886e705b9)
    • Fixes Using the Database, the json operation is not valid (https://github.com/swoft-cloud/swoft-component/pull/482/commits/924569877aa3305dbd4ad573e537907a6ed43404)
    • Fixed limiter speed limiter Redis prefixed with unusable problem (https://github.com/swoft-cloud/swoft-ext/pull/15/commits/7b54d4c3b680299e096950206443aee94d9d859b)

    Update :

    • Update ws server You can disable the ws module by configuring disabledModules (https://github.com/swoft-cloud/swoft-component/pull/478/commits/fa31111d2f5ab9dbf4d858f1226ad4dade407c32)

    Extra :

    • Add a case show on the official website, welcome to submit the case to the official case warehouse swoft-cloud/swoft-case
    • Changes to the document on GitHub will be automatically updated to the official website document, no need to manually refresh

    New:

    • Process Management (https://github.com/swoft-cloud/swoft-component/pull/480/commits/c61b8f77a259aef1e7b5bded86cd0c1e0ca5d1fd)
    • Custom User Process (https://github.com/swoft-cloud/swoft-component/pull/480/commits/c328d540236a710b6380c9470fd1b651d2d67dfe)
    • Process pool (https://github.com/swoft-cloud/swoft-component/pull/480/commits/d2e6290f5a397d038c0aabe03fc719493207562f)
    • TCP server is now available (https://github.com/swoft-cloud/swoft-component/pull/486/commits/e804f2c36da6ca03ca0c8a3e1f3980bac6920b9e)
    Source code(tar.gz)
    Source code(zip)
  • v2.0.3(Jul 8, 2019)

    Remove

    • Remove request->json() method(c9e8f04)

    Enhancement

    • Add interface dependency injection(6169f84)
    • Add getFile to obtain information after file upload and save(fe7e3a6)
    • Add restart() to restart service(2ffec37)
    • Add call 1.x RPC service support(30d73c3)
    • Add AOP class name matching supports regular expressions(bc5e479)
    • Add RPC Server /Http server Middleware namespace use error prompt(b1cec04)
    • Add validator exclusion attribute field withunfields(b1bf44f)
    • Add auto write timestamp(dc58011)
    • Add model action event(dc58011)
    • Add database migration script(26bb464)
    • Add entity automatically interact with json and arrays(dc58011)
    • Add model batch update method withbatchUpdateByIds(dc58011)

    Fixed:

    • Fix cookies some problems when setting up, add some related methods with withCookie(b05afbb01)
    • Fix no capture processing error when the console uses the coroutine mode to run the command.(8a5418bf)
    • Fix restart websocket server command does not stop the old server problem first(db2d935)
    • Fix task return value is null(a69347c)
    • Fix RPC Server only class middleware can't be used(204bc7f)
    • Fix RPC Server return value is null(4d091be)
    • Fix Logger and CLog log level cannot be overwritten and invalid(8eb8aba)
    • Fix attributes in the model do not support custom expressions(dc58011)

    Update:

    • Validator optimization, support for custom validation rules(d959a4f)
    • Rename the error handling management class ErrorHanlders to ErrorManager (f3a8f04b)
    • The exception handling of the console component is changed to the unified processing style provided by the error component. (4f47204)
    • Console component allows to set the disable command group(c5a0269)
    • In the default error handling, the error capture level is allowed to be set. The default level is E_ALL | E_STRICT (afff9029)
    • Optimization When the ws server is started, the http processing function is enabled at the same time, and the information panel adds prompts.(83a81170)
    • Optimize Start the ws server and add the rpc server to start. The information panel does not display the rpc server information.(3d1d0d848)

    Extra:

    • New apollo Component
    • New consul Component
    • New breaker Component
    • New limter component
    Source code(tar.gz)
    Source code(zip)
  • v2.0.2(Jun 21, 2019)

    Enhancement:

    • Added $request->parsedQuery() method (ab45089)
    • Added Bean attribute injection base data type(string/int/bool/float/array),Automatically converts according to annotation type。(e3d4085)
    • Added db() to enable Model/Query/DB to support cutting(f3b12c9)
    • Added DbSelectorInterface to automatically cut the library according to the business(b36ca03)
    • Added Http server to increase cookie response support (1a024bf)
    • Added entity generation for the devtool component(14b4d39c)
    • Added pipeMessage, packet event that allows registration of swoole(afec0e3f)
    • Add more related events at startup(8aaa38c4)

    Fixed:

    • Fix paginate cannot specify query field(308d330)
    • Fix entity join operation, showing no associated table data (446a3a2)
    • Fix entity attribute name attributes and other system-defined attribute conflicts (1a9d25b)
    • Fix AOP facet repeat execution problem (54e00ac)
    • Fix Http service global exception contentType invalidation problem(e704116)
    • Fix Http server does not pass type check when https is enabled (3e9b431)
    • Fix Http server may get errors when responding to html via datae5513df)
    • Repair controller table data display (4d27718)
    • Fix phpstorm meta file generated by devtool(1838552)
    • Fix ws-server parameter route matching failed(4d3392e6)
    • Fix Http service content-type multi-value parsing error(1657979)
    • Fix Co::multi throw exception call error(d0ff0f7)
    • Fix body string unresolved call error(32abf60)
    • Fix the toArray invalidation problem by setter(9c0f9505)
    • Now stop the server (including Ctrl+C) will always delete the pid file, repair does not delete the pid file causes docker to restart failure(6a96b2c)
    • Fix the @Inject injection Redis connection pool is not released and the connection pool is all idle.(feac3700)
    • Fix database open transaction multi-connection pool operation error(3f80474)

    Update:

    • Modify the model methods insert, insertGetId, updateOrInsert to only insert the definition of the @Column field. (9c0f9505)
    • Join the conflicting extension related runtime environment check when starting swowt(7fa7188f)
    • Adjust count, sum, avg, max, min return value type(c9b5e17a)
    • Http server route matching order optimization(d8fb588)
    • Improve RPC Client call error message prompt(a1e56eb)
    • Adjust the position of Redis zAdd members and scores ⚠️ is not backward compatible(1a3275b3)
    • Adjustment If the verification annotation is not added, the verification resolution related process will be skipped.(582c806cc)
    • Remove the buffer full/empty event related code from the swoole (873a97bed)

    Extra:

    • swoft/view added via @View render view support
    Source code(tar.gz)
    Source code(zip)
  • v2.0.1(May 28, 2019)

    Enhancement:

    • Added validator does not have an error message(5ba8682) @stelin
    • Added AOP proxy class name identifier _PROXY_(5ba8682) @stelin
    • Added entity field value type to error exception prompt(ab3cfea) @stelin
    • Added BeanFactory::getBeans() query instance based on class name(999c10f) @stelin
    • Added Model getAttributeValue get field value method(642d791e) @sakuraovq
    • Added GET mode parameter verification(6452a37) @stelin
    • Added Redis by Inject method injection(fc0a88e) @sakuraovq
    • Added RRC service global exception handling(1653b24) @stelin

    Fixed:

    • Fix CLog log call stack error(868102f) @stelin
    • Fix Co::multi call failed error data format(5ba8682) @stelin
    • Fix Function.php repeated loading(b063dd1) @stelin
    • Fix Logger log call stack error(ab3cfea) @stelin
    • Fix worker process exit is not released(close)database、cache、RPC connection pool(5b1baa5) @stelin
    • Fix developer customization content-type failure problem(22cf706) @stelin
    • Fix request/session level destruction invalidation problem(e0d1493) @stelin
    • Fix bean name contains . point number invalidation(dc37c92) @stelin
    • Fix connection pool maxIdleTime invalid parameter problem(0e05591) @stelin
    • Fix file upload (10bc7fa) @sunnyos
    • Fix the default output encoding is UTF8(755c8cf) @sunnyos
    • Optimize Redis configuration type conversion(533b592) @stelin
    • Fix packaged as phar runtime error(533b592) @inhere

    Swoft-cli

    • Fix some problems swoft-cli @inhere
    • Automatically deploy phar to GitHub Release via travis when releasing new versions. (d1503b2) @inhere

    Devtool

    • New bean method code smart hint(bean()/BeanFactory::getBean()/Swoft::getBean())(b63fe07) @stelin
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(May 20, 2019)

    New Features

    • Built-in high performance network server(Http/Websocket/RPC)
    • Flexible componentization
    • Flexible annotation function
    • Diversified command terminal(Console)
    • Powerful Aspect Oriented Programming(AOP)
    • Perfect Container management、Dependency Injection (DI)
    • Flexible event mechanism
    • Implementation of HTTP message based on PSR-7
    • Event Manager Based on PSR-14
    • Middleware based on PSR-15
    • Internationalization(i18n) support
    • Simple and efficient parameter validator
    • High performance connection pool(Mysql/Redis/RPC),Automatic reconnection
    • Database is highly compatible Laravel
    • Cache Redis highly compatible Laravel
    • Efficient task processing
    • Flexible exception handling
    • Powerful log system
    Source code(tar.gz)
    Source code(zip)
  • v1.0.9(Mar 21, 2019)

  • v1.0.8(Oct 9, 2018)

  • v1.0.7(Aug 9, 2018)

  • v1.0.6(Jul 6, 2018)

  • v1.0.5(Apr 10, 2018)

  • v1.0.4(Apr 10, 2018)

  • v1.0.3(Mar 23, 2018)

  • v1.0.2(Mar 21, 2018)

  • v1.0.1(Mar 18, 2018)

  • v1.0.0(Mar 6, 2018)

  • v0.2.6(Jan 5, 2018)

  • v0.2.2(Dec 26, 2017)

  • v0.2.1(Dec 11, 2017)

    1. 重构 Request和Response 参考PSR-7
    2. 简化控制器
    3. 简化 Service
    4. 增加 HTTP 和 Service中间件参考 PSR-15
    5. 增加 HTTP和 Service验证器
    6. 重构事件机制,参考 PSR-14
    7. RESTful 风格支持
    8. 增加表生成实体工具
    9. 增加Docker 支持
    10. 定时任务
    11. 增加单测覆盖
    Source code(tar.gz)
    Source code(zip)
Owner
Swoft Cloud
⚡️ PHP Microservice Coroutine Framework
Swoft Cloud
PHP Coroutine HTTP client - Swoole Humanization Library

PHP Coroutine HTTP client - Swoole Humanization Library

swlib 973 Dec 17, 2022
Multi-process coroutine edition Swoole spider !! Learn about Swoole's network programming and the use of its related APIs

swoole_spider php bin/spider // Just do it !! Cache use Swoole\Table; use App\Table\Cache; $table = new Table(1<<20); // capacity size $table->column

null 3 Apr 22, 2021
swoole and golang ipc, use goroutine complete swoole coroutine

swoole and golang ipc demo swoole process module exec go excutable file as sider car, use goroutine complete swoole coroutine hub.php <?php require '

null 2 Apr 17, 2022
Jin microservices is a complete microservice demo based on PHP language + hyperf microservices framework

介绍 Jin-microservices是基于 php 语言 + hyperf 微服务 框架的完整微服务demo。 github:https://github.com/Double-Jin/jin-microservices gitee:https://gitee.com/ljj96/jin-mic

null 114 Dec 29, 2022
A Restful PHP Microservice Framework!

SLIM 4 FRAMEWORK Introduction This project was built with php SLIM 4 framework with ADR mode, whcich is a compatible resolution of RESTful Api. Featur

POABOB 4 Nov 22, 2022
A Restful PHP Microservice Framework!

SLIM 4 FRAMEWORK Introduction This project was built with php SLIM 4 framework with ADR mode, whcich is a compatible resolution of RESTful Api. Featur

POABOB 4 Aug 4, 2022
DoraRPC is an RPC For the PHP MicroService by The Swoole

Dora RPC 简介(Introduction) Dora RPC 是一款基础于Swoole定长包头通讯协议的最精简的RPC, 用于复杂项目前后端分离,分离后项目都通过API工作可更好的跟踪、升级、维护及管理。 问题提交: Issue For complex projects separation

Chang Long Xu 468 Jan 5, 2023
Files Course Laravel Microservice E-mail

Curso Laravel Microservices com RabbitMQ (micro e-mail) Saiba Mais Sobre o Curso Requisitos Este micro e-mail depende do microservice 01, portanto, pr

EspecializaTi 9 Oct 21, 2021
🔭 Proof of concept on adding observability features (tracing and metrics) to a Nano microservice (using existing Hyperf components).

?? Tracing Nano Proof of concept on adding observability features (tracing and metrics) to a Nano microservice (using existing Hyperf components ?? ).

Leo Cavalcante 4 Oct 24, 2022
CleverStyle Framework is simple, scalable, fast and secure full-stack PHP framework

CleverStyle Framework is simple, scalable, fast and secure full-stack PHP framework. It is free, Open Source and is distributed under Free Public Lice

Nazar Mokrynskyi 150 Apr 12, 2022
Spiral Framework is a High-Performance PHP/Go Full-Stack framework and group of over sixty PSR-compatible components

Spiral HTTP Application Skeleton Spiral Framework is a High-Performance PHP/Go Full-Stack framework and group of over sixty PSR-compatible components.

Spiral Scout 152 Dec 18, 2022
High performance, full-stack PHP framework delivered as a C extension.

Phalcon Framework Phalcon is an open source web framework delivered as a C extension for the PHP language providing high performance and lower resourc

The Phalcon PHP Framework 10.7k Jan 8, 2023
Flare is a PHP full-stack web framework that is light, fast, flexible, and secure.

Flare framework is a PHP full-stack web framework that is simple ,powerful , fast , flexible, and secure with long-term support.

Flare framework 3 Oct 24, 2022
A Faster Lightweight Full-Stack PHP Framework

A Faster Lightweight Full-Stack PHP Framework 中文版  Docker env Just one command to build all env for the easy-php How to build a PHP framework by ourse

Zhan Shi 769 Dec 8, 2022
CodeIgniter - a PHP full-stack web framework that is light, fast, flexible and secure

CodeIgniter 4 Development What is CodeIgniter? CodeIgniter is a PHP full-stack web framework that is light, fast, flexible and secure. More informatio

CodeIgniter 4 web framework 4.5k Jan 4, 2023
This component may look complex, weird and full of hacks but it is a game changer for how we run PHP applications.

PHP Runtimes In early 2021, Symfony created a "Runtime component". This component may look complex, weird and full of hacks but it is a game changer f

Runtime 321 Dec 25, 2022
I made my own simple php framework inspired from laravel framework.

Simple MVC About Since 2019, I started learning the php programming language and have worked on many projects using the php framework. Laravel is one

null 14 Aug 14, 2022
PHPR or PHP Array Framework is a framework highly dependent to an array structure.

this is new repository for php-framework Introduction PHPR or PHP Array Framework is a framework highly dependent to an array structure. PHPR Framewor

Agung Zon Blade 2 Feb 12, 2022
I made my own simple php framework inspired from laravel framework.

Simple MVC About Since 2019, I started learning the php programming language and have worked on many projects using the php framework. Laravel is one

Rizky Alamsyah 14 Aug 14, 2022