1--TEST-- 2swoole_server/task: kill task worker [SWOOLE_PROCESS] 3--SKIPIF-- 4<?php 5require __DIR__ . '/../../include/skipif.inc'; 6skip_if_darwin(); 7skip_if_in_valgrind(); 8?> 9--FILE-- 10<?php 11require __DIR__ . '/../../include/bootstrap.php'; 12use Swoole\Server; 13const PROC_NAME = 'swoole_unittest_server_task_worker'; 14$pm = new SwooleTest\ProcessManager; 15 16$pm->parentFunc = function ($pid) use ($pm) { 17 for ($i = 0; $i < 5; $i++) 18 { 19 //杀死进程 20 kill_process_by_name(PROC_NAME); 21 usleep(10000); 22 //判断进程是否存在 23 Assert::assert(get_process_pid_by_name(PROC_NAME) > 0); 24 } 25 $pm->kill(); 26}; 27 28$pm->childFunc = function () use ($pm) 29{ 30 $serv = new Server('127.0.0.1', $pm->getFreePort(), SWOOLE_PROCESS); 31 $serv->set(["worker_num" => 1, 'log_file' => '/dev/null', 'task_worker_num' => 1,]); 32 $serv->on("WorkerStart", function (Server $serv, $worker_id) use ($pm) { 33 if ($worker_id = 1) 34 { 35 swoole_set_process_name(PROC_NAME); 36 $pm->wakeup(); 37 } 38 }); 39 $serv->on("Receive", function (Server $serv, $fd, $reactorId, $data) 40 { 41 }); 42 $serv->on('task', function (Server $serv, $task_id, $worker_id, $data) 43 { 44 return array("code" => 0, 'message' => 'hello world', 'sid' => uniqid()); 45 }); 46 $serv->on('finish', function (Server $serv, $fd, $rid, $data) 47 { 48 }); 49 $serv->start(); 50}; 51 52$pm->childFirst(); 53$pm->run(); 54 55?> 56--EXPECT-- 57