swoft-cloud / swoft

🚀 PHP Microservice Full Coroutine Framework
https://swoft.org
Apache License 2.0
5.58k stars 786 forks source link

SyncTaskListener在推送异步任务会出错 #899

Closed ChangeChe closed 5 years ago

ChangeChe commented 5 years ago
Q A
Bug report? yes
Feature request? no
Swoft version v2.0.5
Swoole version v4.4.3
PHP version 7.2.16
Runtime environment Docker etc.

Details

swoft版本升级到2.0.5后,将bean里SwooleEvent::TASK事件的class修改为\Swoft\Task\Swoole\SyncTaskListener::class 在执行异步任务Task::async时会提示 [ERROR] Swoft\Task\SyncTaskDispatcher:dispatch(44) Sync task fail(context information has been lost of the coID: -1 /home/www/user_center/vendor/swoft/framework/src/Context/Context.php 53)! 但是任务会执行,并且在任务过程中执行的Log::info('xxxx')都没有打印出来。

stelin commented 5 years ago

swoft/swoft/vendor/swoft/component/src/error/src/DefaultExceptionHandler.php 你把这个文件的,Log::error... 这句话注释掉,就知道具体是什么错误,你这个错误信息,执行报错了。

stelin commented 5 years ago

同步任务是不支持,上下文操作的,同步任务,你不能使用框架的任何方法或封装,日志也不能使用,文档描述说了。

inhere commented 5 years ago

已经去除在最底层的默认异常里调用日志