Giter Site home page Giter Site logo

youzan / zanphp Goto Github PK

View Code? Open in Web Editor NEW
1.4K 128.0 240.0 2.71 MB

PHP开发面向C10K+的高并发SOA服务 和RPC服务首选框架

Home Page: http://zanphp.io/

License: MIT License

PHP 98.14% HTML 1.39% Makefile 0.08% Shell 0.38%
php zanphp rpc soa asyncio yield high-performance

zanphp's Issues

建议nova组件的StructSpecManager新增便捷填充数据方法

源码

namespace Kdt\Iron\Nova\Foundation\Traits;

trait StructSpecManager{
  public function toStruct(array $dbMap,array $data){
        foreach($dbMap as $dbField => $structField){
            if(property_exists($this,$structField) && isset($data[$dbField])){
                $this->$structField = $data[$dbField];
            }
        }
        return $this;
    }
}

虽然已经拥有数据填充方法,但是需要处理对应映射关系...
而平时开发过程大部分数据key=>value已经做好了映射关系
所以建议新增一个快捷数据填充方法

namespace Kdt\Iron\Nova\Foundation\Traits;

trait StructSpecManager{
  public function toStruct(array $dbMap,array $data){
        foreach($dbMap as $dbField => $structField){
            if(property_exists($this,$structField) && isset($data[$dbField])){
                $this->$structField = $data[$dbField];
            }
        }
        return $this;
    }
    public static function fillData(array $data){
        $self = new static();
        foreach($data as $structField => $value){
            if(property_exists($self,$structField) ){
                $self->$structField = $value;
            }
        }
        return $self;
    }
}

这样的修改好处在于业务方快速创建struct对象.
例如

class NovaCall
{
  //新建管理员
   public function createAdmin(){
        $data['admin_name'] = 'test';
        $data['group_id'] = 1;
        $adminDTO = AdminDTO::fillData($data);
        $adminService = new AdminService();
        $admin_id =  $adminService->createAdmin($adminDTO);
        yield $admin_id;

    }

}

Singleton trait无法在子类使用

<?php
use Zan\Framework\Utilities\DesignPattern\Singleton;

class Foo
{
    use Singleton;
}

class Bar extends Foo
{
}

// Fatal error: Uncaught Error: Cannot access  property Bar::$_instance
Bar::instance();

Enable sockets support, require sockets extension

vagrant@homestead:/usr/local/src/zan/zan-extension$ sudo make
/bin/bash /usr/local/src/zan/zan-extension/libtool --mode=compile cc -I. -I/usr/local/src/zan/zan-extension -DPHP_ATOM_INC -I/usr/local/src/zan/zan-extension/include -I/usr/local/src/zan/zan-extension/main -I/usr/local/src/zan/zan-extension -I/usr/include/php/20160303 -I/usr/include/php/20160303/main -I/usr/include/php/20160303/TSRM -I/usr/include/php/20160303/Zend -I/usr/include/php/20160303/ext -I/usr/include/php/20160303/ext/date/lib -I/usr/local/src/zan/zan-extension/include -DHAVE_CONFIG_H -std=gnu99 -Wall -pthread -g -O2 -fstack-check -fbounds-check -fstack-protector -fstack-protector-all -fno-strict-aliasing -c /usr/local/src/zan/zan-extension/swoole.c -o swoole.lo
libtool: compile: cc -I. -I/usr/local/src/zan/zan-extension -DPHP_ATOM_INC -I/usr/local/src/zan/zan-extension/include -I/usr/local/src/zan/zan-extension/main -I/usr/local/src/zan/zan-extension -I/usr/include/php/20160303 -I/usr/include/php/20160303/main -I/usr/include/php/20160303/TSRM -I/usr/include/php/20160303/Zend -I/usr/include/php/20160303/ext -I/usr/include/php/20160303/ext/date/lib -I/usr/local/src/zan/zan-extension/include -DHAVE_CONFIG_H -std=gnu99 -Wall -pthread -g -O2 -fstack-check -fbounds-check -fstack-protector -fstack-protector-all -fno-strict-aliasing -c /usr/local/src/zan/zan-extension/swoole.c -fPIC -DPIC -o .libs/swoole.o
In file included from /usr/local/src/zan/zan-extension/swoole.c:20:0:
/usr/local/src/zan/zan-extension/php_swoole.h:140:2: error: #error "Enable sockets support, require sockets extension."
#error "Enable sockets support, require sockets extension."
^
Makefile:194: recipe for target 'swoole.lo' failed
make: *** [swoole.lo] Error 1

跑zan脚手架项目,出现coredump

  1. 执行命令:
    php ./bin/httpd

  2. 得到报错信息:

[2017-07-06 16:46:23 #] Running in online mode
[2017-07-06 16:46:23 #] server starting .....[0.0.0.0:8030]
[2017-07-06 16:46:23 #9959.0]	WARNING	swReactorThread_onPipeReceive: [Master] set worker idle.[work_id=0]
[2017-07-06 16:46:23 #9959.1]	WARNING	swReactorThread_onPipeReceive: [Master] set worker idle.[work_id=1]
[2017-07-06 16:46:23 $9960.0]	WARNING	swManager_check_exit_status: worker#0[pid#9967] abnormal exit, exited=0, status=0, wifsignaled=1, signal=11
[2017-07-06 16:46:23 #] worker error happening [workerId=0, workerPid=9967, exitCode=0, signalNo=11]...
[2017-07-06 16:46:23 #] worker *0 still has 0 requests in progress...
[2017-07-06 16:46:23 $9960.0]	WARNING	swManager_check_exit_status: worker#1[pid#9968] abnormal exit, exited=0, status=0, wifsignaled=1, signal=11
[2017-07-06 16:46:23 #9959.0]	WARNING	swReactorThread_onPipeReceive: [Master] set worker idle.[work_id=0]
[2017-07-06 16:46:23 #] worker error happening [workerId=1, workerPid=9968, exitCode=0, signalNo=11]...
[2017-07-06 16:46:23 #] worker *1 still has 0 requests in progress...
[2017-07-06 16:46:23 #9959.1]	WARNING	swReactorThread_onPipeReceive: [Master] set worker idle.[work_id=1]
[2017-07-06 16:46:23 $9960.0]	WARNING	swManager_check_exit_status: worker#1[pid#9970] abnormal exit, exited=0, status=0, wifsignaled=1, signal=11
[2017-07-06 16:46:23 #] worker error happening [workerId=1, workerPid=9970, exitCode=0, signalNo=11]...
[2017-07-06 16:46:23 #] worker *1 still has 0 requests in progress...
[2017-07-06 16:46:23 #9959.1]	WARNING	swReactorThread_onPipeReceive: [Master] set worker idle.[work_id=1]
[2017-07-06 16:46:23 $9960.0]	WARNING	swManager_check_exit_status: worker#0[pid#9969] abnormal exit, exited=0, status=0, wifsignaled=1, signal=11
[2017-07-06 16:46:23 #] worker error happening [workerId=0, workerPid=9969, exitCode=0, signalNo=11]...
[2017-07-06 16:46:23 #] worker *0 still has 0 requests in progress...
[2017-07-06 16:46:23 #9959.0]	WARNING	swReactorThread_onPipeReceive: [Master] set worker idle.[work_id=0]
[2017-07-06 16:46:23 $9960.0]	WARNING	swManager_check_exit_status: worker#1[pid#9971] abnormal exit, exited=0, status=0, wifsignaled=1, signal=11
[2017-07-06 16:46:23 #] worker error happening [workerId=1, workerPid=9971, exitCode=0, signalNo=11]...
[2017-07-06 16:46:23 #] worker *1 still has 0 requests in progress...
[2017-07-06 16:46:23 #9959.1]	WARNING	swReactorThread_onPipeReceive: [Master] set worker idle.[work_id=1]
[2017-07-06 16:46:23 $9960.0]	WARNING	swManager_check_exit_status: worker#0[pid#9972] abnormal exit, exited=0, status=0, wifsignaled=1, signal=11
[2017-07-06 16:46:23 #] worker error happening [workerId=0, workerPid=9972, exitCode=0, signalNo=11]...
[2017-07-06 16:46:23 #] worker *0 still has 0 requests in progress...
[2017-07-06 16:46:23 #9959.0]	WARNING	swReactorThread_onPipeReceive: [Master] set worker idle.[work_id=0]
[2017-07-06 16:46:24 $9960.0]	WARNING	swManager_check_exit_status: worker#1[pid#9973] abnormal exit, exited=0, status=0, wifsignaled=1, signal=11
[2017-07-06 16:46:24 #] worker error happening [workerId=1, workerPid=9973, exitCode=0, signalNo=11]...
[2017-07-06 16:46:24 #] worker *1 still has 0 requests in progress...
[2017-07-06 16:46:24 #9959.1]	WARNING	swReactorThread_onPipeReceive: [Master] set worker idle.[work_id=1]
[2017-07-06 16:46:24 $9960.0]	WARNING	swManager_check_exit_status: worker#0[pid#9974] abnormal exit, exited=0, status=0, wifsignaled=1, signal=11
[2017-07-06 16:46:24 #] worker error happening [workerId=0, workerPid=9974, exitCode=0, signalNo=11]...
[2017-07-06 16:46:24 #] worker *0 still has 0 requests in progress...
[2017-07-06 16:46:24 #9959.0]	WARNING	swReactorThread_onPipeReceive: [Master] set worker idle.[work_id=0]
[2017-07-06 16:46:24 $9960.0]	WARNING	swManager_check_exit_status: worker#1[pid#9979] abnormal exit, exited=0, status=0, wifsignaled=1, signal=11
[2017-07-06 16:46:24 #] worker error happening [workerId=1, workerPid=9979, exitCode=0, signalNo=11]...
[2017-07-06 16:46:24 #] worker *1 still has 0 requests in progress...
[2017-07-06 16:46:24 #9959.1]	WARNING	swReactorThread_onPipeReceive: [Master] set worker idle.[work_id=1]

3.gdb php core分析

#0  0x0000000000000000 in ?? ()
#1  0x00007f7fa7afb4f8 in zim_swoole_client_connect (execute_data=0x7f7fb5e138c0, return_value=0x7fffc18a9540)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_client.c:1206
#2  0x000055d5b2c6839f in zend_call_function ()
#3  0x000055d5b2c68819 in call_user_function_ex ()
#4  0x00007f7fa7af237e in sw_call_user_function_ex (ymbol_table=0x0, no_separation=0, params=0x7fffc18a9550, param_count=3, retval_ptr_ptr=<synthetic pointer>, function_name=0x7fffc18a9530, 
    object_pp=<synthetic pointer>, function_table=0x0) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/php7_wrapper.h:243
#5  tcpclient_connect (poolproper=<optimized out>, connClient=<optimized out>) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_connpool.c:576
#6  0x00007f7fa7af570d in createConnobj (pool=0x7f7fb5fb0840, proptr=0x7f7fb5f88880, con_obj=0x7f7fb5fde188)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_connpool.c:250
#7  0x00007f7fa7af5f0a in zim_swoole_connpool_createConnPool (execute_data=<optimized out>, return_value=0x7f7fb5e137b0)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_connpool.c:1341
#8  0x000055d5b2cfc9e6 in ?? ()
#9  0x000055d5b2cb764b in execute_ex ()
#10 0x000055d5b2c68443 in zend_call_function ()
#11 0x000055d5b2c68819 in call_user_function_ex ()
#12 0x00007f7fa7ae9a86 in sw_call_user_function_ex (ymbol_table=0x0, no_separation=0, params=<synthetic pointer>, param_count=2, retval_ptr_ptr=<synthetic pointer>, function_name=<optimized out>, 
    object_pp=0x0, function_table=<optimized out>) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/php7_wrapper.h:243
#13 php_swoole_onWorkerStart (serv=0x55d5b466b0f0, worker_id=0) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_server.c:770
#14 0x00007f7fa7b3d5f5 in swWorker_loop (factory=factory@entry=0x55d5b466b528, worker_id=worker_id@entry=0)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Worker.c:488
#15 0x00007f7fa7b2fc81 in swManager_spawn_worker (factory=0x55d5b466b528, worker_id=0) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Manager.c:678
#16 0x00007f7fa7b30deb in swManager_loop_sync (factory=0x55d5b466b528) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Manager.c:538
#17 swManager_start (factory=factory@entry=0x55d5b466b528) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Manager.c:187
#18 0x00007f7fa7b2601a in swFactoryProcess_start (factory=0x55d5b466b528) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/factory/FactoryProcess.c:101
#19 0x00007f7fa7b389ad in swServer_start (serv=serv@entry=0x55d5b466b0f0) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Server.c:542
#20 0x00007f7fa7b04ea7 in zim_swoole_http_server_start (execute_data=0x7f7fb5e121c0, return_value=0x7f7fb5e121b0)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_http_server.c:1480
#21 0x000055d5b2cfc9e6 in ?? ()
#22 0x000055d5b2cb764b in execute_ex ()
#23 0x000055d5b2d0bb77 in zend_execute ()
#24 0x000055d5b2c771c3 in zend_execute_scripts ()
#25 0x000055d5b2c16c10 in php_execute_script ()
#26 0x000055d5b2d0d847 in ?? ()
#27 0x000055d5b2af7d54 in main ()
(gdb) 
#0  0x0000000000000000 in ?? ()
#1  0x00007f7fa7afb4f8 in zim_swoole_client_connect (execute_data=0x7f7fb5e138c0, return_value=0x7fffc18a9540)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_client.c:1206
#2  0x000055d5b2c6839f in zend_call_function ()
#3  0x000055d5b2c68819 in call_user_function_ex ()
#4  0x00007f7fa7af237e in sw_call_user_function_ex (ymbol_table=0x0, no_separation=0, params=0x7fffc18a9550, param_count=3, retval_ptr_ptr=<synthetic pointer>, function_name=0x7fffc18a9530, 
    object_pp=<synthetic pointer>, function_table=0x0) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/php7_wrapper.h:243
#5  tcpclient_connect (poolproper=<optimized out>, connClient=<optimized out>) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_connpool.c:576
#6  0x00007f7fa7af570d in createConnobj (pool=0x7f7fb5fb0840, proptr=0x7f7fb5f88880, con_obj=0x7f7fb5fde188)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_connpool.c:250
#7  0x00007f7fa7af5f0a in zim_swoole_connpool_createConnPool (execute_data=<optimized out>, return_value=0x7f7fb5e137b0)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_connpool.c:1341
#8  0x000055d5b2cfc9e6 in ?? ()
#9  0x000055d5b2cb764b in execute_ex ()
#10 0x000055d5b2c68443 in zend_call_function ()
#11 0x000055d5b2c68819 in call_user_function_ex ()
#12 0x00007f7fa7ae9a86 in sw_call_user_function_ex (ymbol_table=0x0, no_separation=0, params=<synthetic pointer>, param_count=2, retval_ptr_ptr=<synthetic pointer>, function_name=<optimized out>, 
    object_pp=0x0, function_table=<optimized out>) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/php7_wrapper.h:243
#13 php_swoole_onWorkerStart (serv=0x55d5b466b0f0, worker_id=0) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_server.c:770
#14 0x00007f7fa7b3d5f5 in swWorker_loop (factory=factory@entry=0x55d5b466b528, worker_id=worker_id@entry=0)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Worker.c:488
#15 0x00007f7fa7b2fc81 in swManager_spawn_worker (factory=0x55d5b466b528, worker_id=0) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Manager.c:678
#16 0x00007f7fa7b30deb in swManager_loop_sync (factory=0x55d5b466b528) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Manager.c:538
#17 swManager_start (factory=factory@entry=0x55d5b466b528) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Manager.c:187
#18 0x00007f7fa7b2601a in swFactoryProcess_start (factory=0x55d5b466b528) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/factory/FactoryProcess.c:101
#19 0x00007f7fa7b389ad in swServer_start (serv=serv@entry=0x55d5b466b0f0) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Server.c:542
#20 0x00007f7fa7b04ea7 in zim_swoole_http_server_start (execute_data=0x7f7fb5e121c0, return_value=0x7f7fb5e121b0)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_http_server.c:1480
#21 0x000055d5b2cfc9e6 in ?? ()
#22 0x000055d5b2cb764b in execute_ex ()
#23 0x000055d5b2d0bb77 in zend_execute ()
#24 0x000055d5b2c771c3 in zend_execute_scripts ()
#25 0x000055d5b2c16c10 in php_execute_script ()
#26 0x000055d5b2d0d847 in ?? ()
#27 0x000055d5b2af7d54 in main ()
(gdb) 
#0  0x0000000000000000 in ?? ()
#1  0x00007f7fa7afb4f8 in zim_swoole_client_connect (execute_data=0x7f7fb5e138c0, return_value=0x7fffc18a9540)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_client.c:1206
#2  0x000055d5b2c6839f in zend_call_function ()
#3  0x000055d5b2c68819 in call_user_function_ex ()
#4  0x00007f7fa7af237e in sw_call_user_function_ex (ymbol_table=0x0, no_separation=0, params=0x7fffc18a9550, param_count=3, retval_ptr_ptr=<synthetic pointer>, function_name=0x7fffc18a9530, 
    object_pp=<synthetic pointer>, function_table=0x0) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/php7_wrapper.h:243
#5  tcpclient_connect (poolproper=<optimized out>, connClient=<optimized out>) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_connpool.c:576
#6  0x00007f7fa7af570d in createConnobj (pool=0x7f7fb5fb0840, proptr=0x7f7fb5f88880, con_obj=0x7f7fb5fde188)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_connpool.c:250
#7  0x00007f7fa7af5f0a in zim_swoole_connpool_createConnPool (execute_data=<optimized out>, return_value=0x7f7fb5e137b0)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_connpool.c:1341
#8  0x000055d5b2cfc9e6 in ?? ()
#9  0x000055d5b2cb764b in execute_ex ()
#10 0x000055d5b2c68443 in zend_call_function ()
#11 0x000055d5b2c68819 in call_user_function_ex ()
#12 0x00007f7fa7ae9a86 in sw_call_user_function_ex (ymbol_table=0x0, no_separation=0, params=<synthetic pointer>, param_count=2, retval_ptr_ptr=<synthetic pointer>, function_name=<optimized out>, 
    object_pp=0x0, function_table=<optimized out>) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/php7_wrapper.h:243
#13 php_swoole_onWorkerStart (serv=0x55d5b466b0f0, worker_id=0) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_server.c:770
#14 0x00007f7fa7b3d5f5 in swWorker_loop (factory=factory@entry=0x55d5b466b528, worker_id=worker_id@entry=0)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Worker.c:488
#15 0x00007f7fa7b2fc81 in swManager_spawn_worker (factory=0x55d5b466b528, worker_id=0) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Manager.c:678
#16 0x00007f7fa7b30deb in swManager_loop_sync (factory=0x55d5b466b528) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Manager.c:538
#17 swManager_start (factory=factory@entry=0x55d5b466b528) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Manager.c:187
#18 0x00007f7fa7b2601a in swFactoryProcess_start (factory=0x55d5b466b528) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/factory/FactoryProcess.c:101
#19 0x00007f7fa7b389ad in swServer_start (serv=serv@entry=0x55d5b466b0f0) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Server.c:542
#20 0x00007f7fa7b04ea7 in zim_swoole_http_server_start (execute_data=0x7f7fb5e121c0, return_value=0x7f7fb5e121b0)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_http_server.c:1480
#21 0x000055d5b2cfc9e6 in ?? ()
#22 0x000055d5b2cb764b in execute_ex ()
#23 0x000055d5b2d0bb77 in zend_execute ()
#24 0x000055d5b2c771c3 in zend_execute_scripts ()
#25 0x000055d5b2c16c10 in php_execute_script ()
#26 0x000055d5b2d0d847 in ?? ()
#27 0x000055d5b2af7d54 in main ()
(gdb) 
#0  0x0000000000000000 in ?? ()
#1  0x00007f7fa7afb4f8 in zim_swoole_client_connect (execute_data=0x7f7fb5e138c0, return_value=0x7fffc18a9540)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_client.c:1206
#2  0x000055d5b2c6839f in zend_call_function ()
#3  0x000055d5b2c68819 in call_user_function_ex ()
#4  0x00007f7fa7af237e in sw_call_user_function_ex (ymbol_table=0x0, no_separation=0, params=0x7fffc18a9550, param_count=3, retval_ptr_ptr=<synthetic pointer>, function_name=0x7fffc18a9530, 
    object_pp=<synthetic pointer>, function_table=0x0) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/php7_wrapper.h:243
#5  tcpclient_connect (poolproper=<optimized out>, connClient=<optimized out>) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_connpool.c:576
#6  0x00007f7fa7af570d in createConnobj (pool=0x7f7fb5fb0840, proptr=0x7f7fb5f88880, con_obj=0x7f7fb5fde188)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_connpool.c:250
#7  0x00007f7fa7af5f0a in zim_swoole_connpool_createConnPool (execute_data=<optimized out>, return_value=0x7f7fb5e137b0)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_connpool.c:1341
#8  0x000055d5b2cfc9e6 in ?? ()
#9  0x000055d5b2cb764b in execute_ex ()
#10 0x000055d5b2c68443 in zend_call_function ()
#11 0x000055d5b2c68819 in call_user_function_ex ()
#12 0x00007f7fa7ae9a86 in sw_call_user_function_ex (ymbol_table=0x0, no_separation=0, params=<synthetic pointer>, param_count=2, retval_ptr_ptr=<synthetic pointer>, function_name=<optimized out>, 
    object_pp=0x0, function_table=<optimized out>) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/php7_wrapper.h:243
#13 php_swoole_onWorkerStart (serv=0x55d5b466b0f0, worker_id=0) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_server.c:770
#14 0x00007f7fa7b3d5f5 in swWorker_loop (factory=factory@entry=0x55d5b466b528, worker_id=worker_id@entry=0)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Worker.c:488
#15 0x00007f7fa7b2fc81 in swManager_spawn_worker (factory=0x55d5b466b528, worker_id=0) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Manager.c:678
#16 0x00007f7fa7b30deb in swManager_loop_sync (factory=0x55d5b466b528) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Manager.c:538
#17 swManager_start (factory=factory@entry=0x55d5b466b528) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Manager.c:187
#18 0x00007f7fa7b2601a in swFactoryProcess_start (factory=0x55d5b466b528) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/factory/FactoryProcess.c:101
#19 0x00007f7fa7b389ad in swServer_start (serv=serv@entry=0x55d5b466b0f0) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Server.c:542
#20 0x00007f7fa7b04ea7 in zim_swoole_http_server_start (execute_data=0x7f7fb5e121c0, return_value=0x7f7fb5e121b0)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_http_server.c:1480
#21 0x000055d5b2cfc9e6 in ?? ()
#22 0x000055d5b2cb764b in execute_ex ()
#23 0x000055d5b2d0bb77 in zend_execute ()
#24 0x000055d5b2c771c3 in zend_execute_scripts ()
#25 0x000055d5b2c16c10 in php_execute_script ()
#26 0x000055d5b2d0d847 in ?? ()
#27 0x000055d5b2af7d54 in main ()
(gdb) 
#0  0x0000000000000000 in ?? ()
#1  0x00007f7fa7afb4f8 in zim_swoole_client_connect (execute_data=0x7f7fb5e138c0, return_value=0x7fffc18a9540)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_client.c:1206
#2  0x000055d5b2c6839f in zend_call_function ()
#3  0x000055d5b2c68819 in call_user_function_ex ()
#4  0x00007f7fa7af237e in sw_call_user_function_ex (ymbol_table=0x0, no_separation=0, params=0x7fffc18a9550, param_count=3, retval_ptr_ptr=<synthetic pointer>, function_name=0x7fffc18a9530, 
    object_pp=<synthetic pointer>, function_table=0x0) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/php7_wrapper.h:243
#5  tcpclient_connect (poolproper=<optimized out>, connClient=<optimized out>) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_connpool.c:576
#6  0x00007f7fa7af570d in createConnobj (pool=0x7f7fb5fb0840, proptr=0x7f7fb5f88880, con_obj=0x7f7fb5fde188)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_connpool.c:250
#7  0x00007f7fa7af5f0a in zim_swoole_connpool_createConnPool (execute_data=<optimized out>, return_value=0x7f7fb5e137b0)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_connpool.c:1341
#8  0x000055d5b2cfc9e6 in ?? ()
#9  0x000055d5b2cb764b in execute_ex ()
#10 0x000055d5b2c68443 in zend_call_function ()
#11 0x000055d5b2c68819 in call_user_function_ex ()
#12 0x00007f7fa7ae9a86 in sw_call_user_function_ex (ymbol_table=0x0, no_separation=0, params=<synthetic pointer>, param_count=2, retval_ptr_ptr=<synthetic pointer>, function_name=<optimized out>, 
    object_pp=0x0, function_table=<optimized out>) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/php7_wrapper.h:243
#13 php_swoole_onWorkerStart (serv=0x55d5b466b0f0, worker_id=0) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_server.c:770
#14 0x00007f7fa7b3d5f5 in swWorker_loop (factory=factory@entry=0x55d5b466b528, worker_id=worker_id@entry=0)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Worker.c:488
#15 0x00007f7fa7b2fc81 in swManager_spawn_worker (factory=0x55d5b466b528, worker_id=0) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Manager.c:678
#16 0x00007f7fa7b30deb in swManager_loop_sync (factory=0x55d5b466b528) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Manager.c:538
#17 swManager_start (factory=factory@entry=0x55d5b466b528) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Manager.c:187
#18 0x00007f7fa7b2601a in swFactoryProcess_start (factory=0x55d5b466b528) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/factory/FactoryProcess.c:101
#19 0x00007f7fa7b389ad in swServer_start (serv=serv@entry=0x55d5b466b0f0) at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/src/network/Server.c:542
#20 0x00007f7fa7b04ea7 in zim_swoole_http_server_start (execute_data=0x7f7fb5e121c0, return_value=0x7f7fb5e121b0)
    at /media/kcloze/8685937c-af42-4319-aa9b-bb123ccd18ba/data/src/zan/zan-extension/swoole_http_server.c:1480
#21 0x000055d5b2cfc9e6 in ?? ()
#22 0x000055d5b2cb764b in execute_ex ()
#23 0x000055d5b2d0bb77 in zend_execute ()
#24 0x000055d5b2c771c3 in zend_execute_scripts ()
#25 0x000055d5b2c16c10 in php_execute_script ()
#26 0x000055d5b2d0d847 in ?? ()
#27 0x000055d5b2af7d54 in main ()

4.以上参照文档:
http://zanphpdoc.zanphp.io/install.html

协程的底层有一处写的有问题,会出现内存溢出

文件 https://github.com/zanphp/coroutine/blob/master/src/Task.php 第50行如下:

 public function __construct(\Generator $coroutine, Context $context = null, $taskId = 0, Task $parentTask = null)
    {
        $this->coroutine = $this->caughtCoroutine($coroutine);
        $this->taskId = $taskId ? $taskId : TaskId::create();
        $this->parentTask = $parentTask;
        if ($context) {
            $this->context = $context;
        } else {
            $this->context = new Context();
        }
        $this->scheduler = new Scheduler($this);
    }

这个 $this->scheduler = new Scheduler($this); 这个会把 Scheduler 放在自己的寄存器里,然而 Scheduler 这个对象又把 Task 放在了自己的 task 变量里。形成了相互引用。在处理完毕后并不会释放对象,只有在php垃圾回收机制下才会被清理。不信的话,可以加

    public function __destruct()
    {
        echo "i'm unset";
    }

会发现并未协程执行完毕后这个方法并未被执行,内存中还存在。

建议Task中加:

    public function release()
    {
        # 移除对象,避免相互引用导致的对象不可释放
        if (isset($this->scheduler))
        {
            $this->scheduler->release();
            unset($this->scheduler);
        }
    }

Scheduler 中加:

    public function release()
    {
        unset($this->task);
    }

并在 Signal::TASK_KILLEDSignal::TASK_DONE 时调用。这样在协程处理完毕后,会立即释放对象,避免内存溢出。

windows下php7环境安装后执行zan报错

php-7.0.10-Win32-VC14-x64

E:\Program Files>composer -disable-tls global require youzan/zan-installer
Changed current directory to C:/Users/Wind/AppData/Roaming/Composer
You are running Composer with SSL/TLS protection disabled.
Warning: Accessing packagist.org over http which is an insecure protocol.
Using version ^1.0 for youzan/zan-installer
./composer.json has been updated
Loading composer repositories with package information
Warning: Accessing packagist.org over http which is an insecure protocol.
Updating dependencies (including require-dev)

  • Installing seld/cli-prompt (1.0.2)
    Failed to download seld/cli-prompt from dist: You must enable the openssl extension to download files via https
    Now trying to download from source
  • Installing seld/cli-prompt (1.0.2)
    Cloning 8cbe10923cae5bcd7c5a713f6703fc4727c8c1b4
  • Installing league/climate (3.2.1)
    Failed to download league/climate from dist: You must enable the openssl extension to download files via https
    Now trying to download from source
  • Installing league/climate (3.2.1)
    Cloning b103fc8faa3780c802cc507d5f0ff534ecc94fb5
  • Installing youzan/zan-installer (1.0.9)
    Failed to download youzan/zan-installer from dist: You must enable the openssl extension to download files via https
    Now trying to download from source
  • Installing youzan/zan-installer (1.0.9)
    Cloning fcd45ec79b84843052a00401dad4570f69e5f993

Writing lock file
Generating autoload files

E:\Program Files>zan


/\ \ /\
\ \/'/ ___ __ __ ____ __ ___
\\ /' / \/\ \/\ \/\_ ,\ /'\ /' _
`\ \ /\ \L\ \ \ \ // //\ \L./\ /\
\ \ **/\ **/ /\ __/.\ \
/
//
/ // ///__///////
Create a new ZanPhp application.
Which type application would you create? (use to select)
PHP Fatal error: Method League\CLImate\TerminalObject\Dynamic\Checkbox\Checkbox::__toString() must not throw an exception, caught Error: Call to undefined function League\CLImate\TerminalObject\Helper\mb_strwidth() in C:\Users\Wind\AppData\Roaming\Composer\vendor\league\climate\src\TerminalObject\Dynamic\Checkbox\CheckboxGroup.php on line 0

Fatal error: Method League\CLImate\TerminalObject\Dynamic\Checkbox\Checkbox::__toString() must not throw an exception, caught Error: Call to undefined function League\CLImate\TerminalObject\Helper\mb_strwidth() in C:\Users\Wind\AppData\Roaming\Composer\vendor\league\climate\src\TerminalObject\Dynamic\Checkbox\CheckboxGroup.php on line 0

E:\Program Files>

默认的错误页面是不是可以不依赖有赞的静态资源

https://github.com/youzan/zan/blob/master/src/Network/Http/Exception/Handler/BizErrorHandler.php
https://github.com/youzan/zan/blob/master/src/Network/Http/Exception/Handler/InternalErrorHandler.php

这些文件里面都有html字符串,发现都调用了有赞的静态资源


    <link rel="icon" href="https://su.yzcdn.cn/v2/image/yz_fc.ico" />
.....
<script src="https://su.yzcdn.cn/jquery-2.0.3.min.js"></script>
<script src="https://su.yzcdn.cn/jquery.parallaxify-0.0.2.min.js"></script>

如果用的人多,就相当于对你们cdn或者web服务器的ddos, 会消耗你们的资源

连续coredump

启动时 若配了redis连接池 连续coredump

[2017-07-16 01:51:26 #0] worker *0 starting .....
php(32850,0x7fff94a633c0) malloc: *** error for object 0x7fd3c8301030: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug

youzan/zanhttp的Demo正常启动 ,访问无输出

现象:
下载Demo后,服务正常启动.
curl http://127.0.0.1:8030 无输出

检查:
server端 控制台 提示错误为:
PHP Parse error: syntax error, unexpected '*', expecting ',' or ';' in /var/www/html/zanhttp/vendor/zanphp/zan/src/Network/Http/RequestHandler.php on line 43 [2016-06-21 11:21:26 $27845.0] WARNING swManager_check_exit_status: worker#1 abnormal exit, status=255, signal=0 http worker error ..... http worker start .....

原因:
/src/Network/Http/RequestHandler.php on line 43
const DEFAULT_TIMEOUT = 30 * 1000; // const 不支持表达式赋值 修改为
const DEFAULT_TIMEOUT = 30000; 即可

swoole_mysql_query已经弃用了

如题 新版本的swoole里这个函数已经弃用了 但是 Zan\Framework\Store\Database\Mysq\Mysqli里还是用的这个
现在可以使用的是异步MySQL客户端 swoole_mysql对象里的query方法
或者协程 Swoole\Coroutine\MySQL类里的方法

httpClient类存在内存泄露

httpClient对象析构销毁的时候没有调用close方法,new大量httpClient对象后,swoole内部不会释放内存,导致内存泄露

bash ./zan报错

image

直接运行报错,目前已定位到是tput命令不存在的问题,如何解决?
如果要安装tput如何安装?

系统为docker的ubuntu:14.04

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.