Skip to content

Commit

Permalink
3.3.0-dev Task 大重构
Browse files Browse the repository at this point in the history
  • Loading branch information
kiss291323003 committed Aug 15, 2019
1 parent 6331402 commit f89579d
Show file tree
Hide file tree
Showing 15 changed files with 53 additions and 271 deletions.
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@
"jeremeamia/superclosure": "^2.4",
"easyswoole/trigger": "^1.0",
"dragonmantank/cron-expression": "^2.2",
"easyswoole/config": "^1.0"
"easyswoole/config": "^1.0",
"easyswoole/task": "^1.0"
},
"autoload": {
"psr-4": {
Expand Down
62 changes: 11 additions & 51 deletions src/Core.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,18 @@
use EasySwoole\EasySwoole\Crontab\Crontab;
use EasySwoole\EasySwoole\Swoole\EventHelper;
use EasySwoole\EasySwoole\Swoole\EventRegister;
use EasySwoole\EasySwoole\Swoole\Task\QuickTaskInterface;
use EasySwoole\EasySwoole\Task\TaskManager;
use EasySwoole\Http\Dispatcher;
use EasySwoole\Http\Message\Status;
use EasySwoole\Http\Request;
use EasySwoole\Http\Response;
use EasySwoole\EasySwoole\Swoole\Task\AbstractAsyncTask;
use EasySwoole\EasySwoole\Swoole\Task\SuperClosure;
use EasySwoole\Log\LoggerInterface;
use EasySwoole\Trigger\Location;
use EasySwoole\Trigger\TriggerInterface;
use EasySwoole\Utility\File;
use Swoole\Server\Task;
use EasySwoole\Log\Logger as DefaultLogger;
use EasySwoole\Trigger\Trigger as DefaultTrigger;
use EasySwoole\Task\Config as TaskConfig;

////////////////////////////////////////////////////////////////////
// _ooOoo_ //
Expand Down Expand Up @@ -266,53 +264,6 @@ private function registerDefaultCallBack(\swoole_server $server,int $serverType)
$response_psr->__response();
});
}
EventHelper::on($server,EventRegister::onTask,function (\swoole_server $server, Task $task){
$finishData = null;
$taskObj = $task->data;
if(is_string($taskObj) && class_exists($taskObj)){
$ref = new \ReflectionClass($taskObj);
if($ref->implementsInterface(QuickTaskInterface::class)){
try{
$finishData = $taskObj::run($server,$task->id,$task->worker_id,$task->flags);
}catch (\Throwable $throwable){
Trigger::getInstance()->throwable($throwable);
}
goto finish;
}else if($ref->isSubclassOf(AbstractAsyncTask::class)){
$taskObj = new $taskObj;
}
}
if($taskObj instanceof AbstractAsyncTask){
try{
$ret = $taskObj->__onTaskHook($task->id,$task->worker_id,$task->flags);
$finishData = $taskObj->__onFinishHook($ret,$task->id);
}catch (\Throwable $throwable){
Trigger::getInstance()->throwable($throwable);
}
}else if($taskObj instanceof SuperClosure){
try{
$finishData = $taskObj( $server, $task->id,$task->worker_id,$task->flags);
}catch (\Throwable $throwable){
Trigger::getInstance()->throwable($throwable);
}
}else if(is_callable($taskObj)){
try{
$finishData = call_user_func($taskObj,$server,$task->id,$task->worker_id,$task->flags);
}catch (\Throwable $throwable){
Trigger::getInstance()->throwable($throwable);
}
}
finish :{
//禁止 process执行回调
if(($server->setting['worker_num'] + $server->setting['task_worker_num']) > $task->worker_id){
$task->finish($finishData);
}
}
});

EventHelper::on($server,EventRegister::onFinish,function (\swoole_server $serv, int $task_id,$data){
return $data;
});

//注册默认的worker start
EventHelper::registerWithAdd(ServerManager::getInstance()->getMainEventRegister(),EventRegister::onWorkerStart,function (\swoole_server $server,$workerId){
Expand Down Expand Up @@ -343,5 +294,14 @@ private function extraHandler()
{
//注册crontab进程
Crontab::getInstance()->__run();
//注册Task进程
$config = Config::getInstance()->getConf('MAIN_SERVER.TASK');
$config = new TaskConfig($config);
$config->setTempDir(EASYSWOOLE_TEMP_DIR);
$config->setServerName(Config::getInstance()->getConf('SERVER_NAME'));
$config->setOnException(function (\Throwable $throwable){
Trigger::getInstance()->throwable($throwable);
});
TaskManager::getInstance($config)->attachToServer(ServerManager::getInstance()->getSwooleServer());
}
}
5 changes: 2 additions & 3 deletions src/Crontab/AbstractCronTask.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,9 @@

namespace EasySwoole\EasySwoole\Crontab;

use EasySwoole\Task\AbstractInterface\TaskInterface;

use EasySwoole\EasySwoole\Swoole\Task\QuickTaskInterface;

abstract class AbstractCronTask implements QuickTaskInterface
abstract class AbstractCronTask implements TaskInterface
{
abstract public static function getRule():string ;
abstract public static function getTaskName():string ;
Expand Down
4 changes: 2 additions & 2 deletions src/Crontab/CronRunner.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
use Cron\CronExpression;
use EasySwoole\Component\TableManager;
use EasySwoole\Component\Timer;
use EasySwoole\EasySwoole\Swoole\Task\TaskManager;
use EasySwoole\Component\Process\AbstractProcess;
use EasySwoole\EasySwoole\Task\TaskManager;

class CronRunner extends AbstractProcess
{
Expand Down Expand Up @@ -50,7 +50,7 @@ private function cronProcess()
$table = TableManager::getInstance()->get(Crontab::$__swooleTableName);
$table->incr($taskName, 'taskRunTimes', 1);
$table->set($taskName, ['taskNextRunTime' => $nextRunTime->getTimestamp()]);
TaskManager::processAsync($this->tasks[$taskName]);
TaskManager::getInstance()->async($this->tasks[$taskName]);
});
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/Crontab/Exception/CronTaskNotExist.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
* Class CronTaskNotExist
* @package EasySwoole\EasySwoole\Crontab
*/
class CronTaskNotExist extends \Exception
class CronTaskNotExist extends Exception
{
protected $taskName;

Expand Down
2 changes: 1 addition & 1 deletion src/Crontab/Exception/CronTaskRuleInvalid.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

use Throwable;

class CronTaskRuleInvalid extends CrontabException
class CronTaskRuleInvalid extends Exception
{
protected $taskName;
protected $taskRule;
Expand Down
18 changes: 0 additions & 18 deletions src/Crontab/Exception/CrontabException.php

This file was deleted.

15 changes: 15 additions & 0 deletions src/Crontab/Exception/Exception.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php
/**
* Created by PhpStorm.
* User: eValor
* Date: 2018-11-23
* Time: 13:27
*/

namespace EasySwoole\EasySwoole\Crontab\Exception;


class Exception extends \Exception
{

}
6 changes: 5 additions & 1 deletion src/Resource/Config.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,15 @@ return [
'RUN_MODEL' => SWOOLE_PROCESS,
'SETTING' => [
'worker_num' => 8,
'task_worker_num' => 8,
'reload_async' => true,
'task_enable_coroutine' => true,
'max_wait_time'=>3
],
'TASK'=>[
'workerNum'=>4,
'maxRunningNum'=>128,
'timeout'=>15
]
],
'TEMP_DIR' => null,
'LOG_DIR' => null
Expand Down
49 changes: 0 additions & 49 deletions src/Swoole/Task/AbstractAsyncTask.php

This file was deleted.

15 changes: 0 additions & 15 deletions src/Swoole/Task/QuickTaskInterface.php

This file was deleted.

47 changes: 0 additions & 47 deletions src/Swoole/Task/SuperClosure.php

This file was deleted.

Loading

0 comments on commit f89579d

Please sign in to comment.