gotask
gotask copied to clipboard
Windows 系统支持
用于swoole-cli Windows系统下的使用
go test -v .\server_windows_test.go .\server_windows.go .\common.go .\flag.go .\client.go .\generator.go .\process_windows.go
=== RUN TestClearAddr
C:\Users\tryto\AppData\Local\Temp\774225308
--- PASS: TestClearAddr (0.00s)
PASS
ok command-line-arguments 1.051s
hyperf 将go程序打包为.exe 下启动正常
未改变原代码,原有文件上加了编译条件判断
go run .\example\sidecar.go -address 127.0.0.1:6001
or
go build -o app.exe .\sidecar.go
.\app.exe -address 127.0.0.1:6001
const ADDR = '127.0.0.1:6001';
run(function () {
$task = new SocketIPCSender(ADDR);
var_dump($task->call('App.HelloString', 'Hyperf'));
var_dump($task->call('App.HelloInterface', ['jack', 'jill']));
var_dump($task->call('App.HelloStruct', [
'firstName' => 'LeBron',
'lastName' => 'James',
'id' => 23,
]));
var_dump($task->call('App.HelloBytes', base64_encode('My Bytes'), GoTask::PAYLOAD_RAW));
try {
$task->call('App.HelloError', 'Hyperf');
} catch (\Throwable $e) {
var_dump($e);
}
try {
$task->call('App.HelloPanic', '');
} catch (\Throwable $e) {
var_dump($e);
}
});
swoole-cli .\main.php
string(14) "Hello, Hyperf!"
array(1) {
["hello"]=>
array(2) {
[0]=>
string(4) "jack"
[1]=>
string(4) "jill"
}
}
array(1) {
["hello"]=>
array(3) {
["id"]=>
int(23)
["firstName"]=>
string(6) "LeBron"
["lastName"]=>
string(5) "James"
}
}
string(8) "My Bytes"
object(Spiral\Goridge\Exceptions\ServiceException)#9 (7) {
["message":protected]=>
string(92) "error 'Hyperf, it is possible to return error' on 'Hyperf\GoTask\Relay\CoroutineSocketRelay'"
["string":"Exception":private]=>
string(0) ""
["code":protected]=>
int(0)
["file":protected]=>
string(85) "/cygdrive/f/.../gotask/vendor/spiral/goridge/src/RPC.php"
["line":protected]=>
int(123)
["trace":"Exception":private]=>
array(4) {
[0]=>
array(6) {
["file"]=>
string(85) "/cygdrive/f/.../gotask/vendor/spiral/goridge/src/RPC.php"
["line"]=>
int(107)
["function"]=>
string(10) "handleBody"
["class"]=>
string(18) "Spiral\Goridge\RPC"
["type"]=>
string(2) "->"
["args"]=>
array(2) {
[0]=>
string(38) "Hyperf, it is possible to return error"
[1]=>
int(12)
}
}
[1]=>
array(6) {
["file"]=>
string(79) "/cygdrive/f/.../gotask/src/IPC/SocketIPCSender.php"
["line"]=>
int(52)
["function"]=>
string(4) "call"
["class"]=>
string(18) "Spiral\Goridge\RPC"
["type"]=>
string(2) "->"
["args"]=>
array(3) {
[0]=>
string(14) "App.HelloError"
[1]=>
string(6) "Hyperf"
[2]=>
int(12)
}
}
[2]=>
array(6) {
["file"]=>
string(59) "/cygdrive/f/.../win/.\main.php"
["line"]=>
int(41)
["function"]=>
string(4) "call"
["class"]=>
string(33) "Hyperf\GoTask\IPC\SocketIPCSender"
["type"]=>
string(2) "->"
["args"]=>
array(2) {
[0]=>
string(14) "App.HelloError"
[1]=>
string(6) "Hyperf"
}
}
[3]=>
array(2) {
["function"]=>
string(9) "{closure}"
["args"]=>
array(0) {
}
}
}
["previous":"Exception":private]=>
NULL
}
object(Spiral\Goridge\Exceptions\ServiceException)#10 (7) {
["message":protected]=>
string(94) "error 'panic in go: Test if we can handle panic' on 'Hyperf\GoTask\Relay\CoroutineSocketRelay'"
["string":"Exception":private]=>
string(0) ""
["code":protected]=>
int(0)
["file":protected]=>
string(85) "/cygdrive/f/.../gotask/vendor/spiral/goridge/src/RPC.php"
["line":protected]=>
int(123)
["trace":"Exception":private]=>
array(4) {
[0]=>
array(6) {
["file"]=>
string(85) "/cygdrive/f/.../gotask/vendor/spiral/goridge/src/RPC.php"
["line"]=>
int(107)
["function"]=>
string(10) "handleBody"
["class"]=>
string(18) "Spiral\Goridge\RPC"
["type"]=>
string(2) "->"
["args"]=>
array(2) {
[0]=>
string(40) "panic in go: Test if we can handle panic"
[1]=>
int(12)
}
}
[1]=>
array(6) {
["file"]=>
string(79) "/cygdrive/f/...//gotask/src/IPC/SocketIPCSender.php"
["line"]=>
int(52)
["function"]=>
string(4) "call"
["class"]=>
string(18) "Spiral\Goridge\RPC"
["type"]=>
string(2) "->"
["args"]=>
array(3) {
[0]=>
string(14) "App.HelloPanic"
[1]=>
string(0) ""
[2]=>
int(12)
}
}
[2]=>
array(6) {
["file"]=>
string(59) "/cygdrive/f/.../.\main.php"
["line"]=>
int(46)
["function"]=>
string(4) "call"
["class"]=>
string(33) "Hyperf\GoTask\IPC\SocketIPCSender"
["type"]=>
string(2) "->"
["args"]=>
array(2) {
[0]=>
string(14) "App.HelloPanic"
[1]=>
string(0) ""
}
}
[3]=>
array(2) {
["function"]=>
string(9) "{closure}"
["args"]=>
array(0) {
}
}
}
["previous":"Exception":private]=>
NULL
}