1--TEST-- 2swoole_server/task: task callback is null 3--SKIPIF-- 4<?php require __DIR__ . '/../../include/skipif.inc'; ?> 5--FILE-- 6<?php 7require __DIR__ . '/../../include/bootstrap.php'; 8 9use Swoole\Server; 10 11$pm = new SwooleTest\ProcessManager; 12 13$pm->parentFunc = function ($pid) use ($pm) { 14 $cli = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC); 15 $cli->set(['open_eof_check' => true, "package_eof" => "\r\n\r\n"]); 16 $cli->connect('127.0.0.1', $pm->getFreePort(), 0.5) or die("ERROR"); 17 18 $cli->send("task-01") or die("ERROR"); 19 $res = json_decode(trim($cli->recv()), true); 20 Assert::same($res['code'], 0); 21 Assert::same($res['message'], 'hello world'); 22 echo "SUCCESS\n"; 23 24 $pm->kill(); 25}; 26 27$pm->childFunc = function () use ($pm) { 28 ini_set('swoole.display_errors', 'Off'); 29 $serv = new Server('127.0.0.1', $pm->getFreePort()); 30 $serv->set(array( 31 "worker_num" => 1, 32 'task_worker_num' => 2, 33 'log_file' => '/dev/null', 34 )); 35 $serv->on("WorkerStart", function (Server $serv) use ($pm) { 36 $pm->wakeup(); 37 }); 38 $serv->on('receive', function (Server $serv, $fd, $rid, $data) { 39 $serv->task(['type' => 'array', 'value' => $data, 'fd' => $fd], -1, null); 40 }); 41 $serv->on('task', function (Server $serv, $task_id, $worker_id, $data) { 42 return array("code" => 0, 'message' => 'hello world', 'sid' => uniqid(), 'fd' => $data['fd']); 43 }); 44 $serv->on('finish', function (Server $serv, $task_id, $data) { 45 $serv->send($data['fd'], json_encode($data) . "\r\n\r\n"); 46 }); 47 $serv->start(); 48}; 49 50$pm->childFirst(); 51$pm->run(); 52?> 53--EXPECT-- 54SUCCESS 55