コード例 #1
0
ファイル: Swoole.php プロジェクト: millken/ypf
 public function onPipeMessage(\swoole_http_server $server, $worker_id, $data)
 {
     $server->task($data);
 }
コード例 #2
0
ファイル: HttpServerController.php プロジェクト: gtyd/jira
 public function actionRun($hostinfo = '0.0.0.0:9580')
 {
     $this->parseHostPort($hostinfo);
     $http = new \swoole_http_server($this->host, $this->port);
     //初始化进程数 ,关联getTaskId函数的使用
     $task_num = 0;
     foreach (self::$q_config as $key => $val) {
         self::$event_base[$key] = $task_num;
         self::$cnt[$key] = 0;
         $task_num += $val;
     }
     //初始化配置
     $this->config['task_worker_num'] = $task_num;
     $http->set($this->config);
     //接受http请求参数
     $http->on('request', function ($request, $response) use($http) {
         if (!isset($request->get['opt'])) {
             $response->end('HTTP_OPT_ERROR:missing opt');
             return;
         }
         $opt = $request->get['opt'];
         if ($opt == 'put') {
             //获取data数据
             if (isset($request->get['data'])) {
                 $data = $request->get['data'];
             } elseif (isset($request->post['data'])) {
                 $data = $request->post['data'];
             } else {
                 $response->end('HTTP_PARAM_ERROR:missing data');
                 return;
             }
             $data = json_decode($data, true);
             if (json_last_error() != JSON_ERROR_NONE) {
                 $response->end(json_last_error_msg());
                 return;
             }
             if (!isset($data['class']) || !isset(self::$q_config[$data['class']])) {
                 $type = 'Common';
             } else {
                 $type = $data['class'];
             }
             $taskId = $this->getTaskId($type);
             if (!isset($data['task'])) {
                 $response->end('HTTP_PARAM_ERROR:missing task');
                 return;
             }
             //分配给task的worker
             $http->task($data, $taskId);
             $response->end("HTTP_PUT_OK");
         } elseif ($opt == 'reload') {
             $http->reload();
             $response->end('reset now!');
             return;
         } elseif ($opt == 'shutdown') {
             $http->shutdown();
             $response->end('shutdown now!');
             return;
         } else {
             $response->end("HTTP_OPT_ERROR:nothing to do");
             return;
         }
     });
     //任务调度
     $http->on('Task', function ($http, $taskId, $fromId, $data) {
         $rs = $this->doJob($data);
         return $rs;
     });
     //任务完成的响应事件
     $http->on('Finish', function ($http, $taskId, $data) {
         echo "finish task,the result:" . $data . "\n";
     });
     $http->start();
 }
コード例 #3
0
ファイル: http.php プロジェクト: noikiy/swoole-src
<?php

$serv = new swoole_http_server("127.0.0.1", 9501);
$serv->set(array('worker_num' => 1, 'task_worker_num' => 1));
$serv->on('Request', function ($req, $resp) {
    $data = str_repeat('A', 8192 * 10);
    global $serv;
    $serv->task(array($data, 1000), -1, function ($serv, $task_id, $data) use($resp) {
        $resp->end("Task#{$task_id} finished." . PHP_EOL);
    });
});
$serv->on('Task', function (swoole_server $serv, $task_id, $from_id, $data) {
    //echo "#{$serv->worker_id}\tonTask: [PID={$serv->worker_pid}]: task_id=$task_id, data_len=".strlen($data).".".PHP_EOL;
    //    $serv->finish($data);
    return $data;
});
$serv->on('Finish', function (swoole_server $serv, $task_id, $data) {
    echo "Task#{$task_id} finished, data_len=" . strlen($data) . PHP_EOL;
});
$serv->on('workerStart', function ($serv, $worker_id) {
    global $argv;
    if ($serv->taskworker) {
        swoole_set_process_name("php {$argv[0]}: task_worker");
    } else {
        swoole_set_process_name("php {$argv[0]}: worker");
    }
});
$serv->on('workerStop', function (swoole_server $serv, $id) {
    echo "stop\n";
    var_dump($id);
});
コード例 #4
0
ファイル: Server.php プロジェクト: praswicaksono/Vinnige
 /**
  * @param mixed $data
  */
 public function asyncTask($data)
 {
     $this->server->task($data);
 }
コード例 #5
0
ファイル: server.php プロジェクト: phpgao/githook
define('DS', DIRECTORY_SEPARATOR);
define('WORKSPACE', __DIR__);
require_once WORKSPACE . DS . 'config.php';
//server init
$httpServerObj = new swoole_http_server(SERVER_LISTEN_IP, SERVER_LISTEN_PORT);
$httpServerObj->set($aServerSetting);
$httpServerObj->on('request', function (swoole_http_request $request, swoole_http_response $response) {
    global $aWhiteIpList;
    $sIp = $request->server['remote_addr'];
    if (!empty($aWhiteIpList) && !in_array($sIp, $aWhiteIpList)) {
        $response->end('error');
        return true;
    }
    global $httpServerObj;
    $sRequestUri = $request->server['request_uri'];
    $sRequestUri = trim($sRequestUri, '/');
    $httpServerObj->task($sRequestUri);
    $response->end('ok');
});
$httpServerObj->on('Task', function (swoole_server $serverObj, $taskId, $fromId, $data) {
    global $aRepoConfig;
    if (!isset($aRepoConfig[$data])) {
        return true;
    }
    exec($aRepoConfig[$data]);
    return true;
});
$httpServerObj->on('Finish', function (swoole_server $serverObj, $taskId, $data) {
    return true;
});
$httpServerObj->start();