A versão v4.6.2 é principalmente uma versão de correção de bug sem alterações incompatíveis com versões anteriores.
Adicionado Coroutine\Socket->recvLine()
e Coroutine\Socket->readWithBuffer()
método
Eles são usados para resolver problemas de compatibilidade de socket_read e recv(1)
um grande número de problemas de chamada de sistema ao usar a recepção byte a byte.
Ao mesmo tempo, o Response\create()
método é aprimorado , podendo ser usado independentemente do Servidor, como:
use Swoole\Coroutine\Server;
use Swoole\Coroutine\Server\Connection;
use Swoole\Http\Request;
use Swoole\Http\Response;
Swoole\Coroutine\run(function () {
$server = new Server('0.0.0.0', 9501, false);
go(function () use ($server) {
$server->handle(function (Connection $conn) use ($server) {
$req = Request::create();
while(true) {
$data = $conn->recv();
if (strlen($data) != $req->parse($data) or $req->isCompleted()) {
break;
}
}
var_dump($req->get);
$resp = Response::create([$conn->exportSocket(), $req]);
$resp->header('X-Server', 'swoole');
$resp->end('Hello, Swoole');
$server->shutdown();
});
$server->start();
});
});
Use curl para iniciar uma solicitação após a inicialização
$ curl -I http://127.0.0.1:9501/\?hello\=swoole
HTTP/1.1 200 OK
X-Server: swoole
Server: swoole-http-server
Connection: keep-alive
Content-Type: text/html
Date: Mon, 25 Jan 2021 10:58:31 GMT
Content-Length: 13
$ curl http://127.0.0.1:9501/\?hello\=swoole
Hello, Swoole
O terminal irá imprimir os parâmetros GET na solicitação
array(1) {
["hello"]=>
string(6) "swoole"
}
A seguir está o log de atualização completo:
Nova API
- Novo
Http\Request\getMethod()
método (# 3987) (@ luolaifa000) - Novo
Coroutine\Socket->recvLine()
método (# 4014) (@matyhtf) - Novo
Coroutine\Socket->readWithBuffer()
método (# 4017) (@matyhtf)
Realçar
Response\create()
Método aprimorado , pode ser usado independentemente do servidor (# 3998) (@matyhtf)- Suporte ao
Coroutine\Redis->hExists
retorno do tipo bool após definir o modo de compatibilidade (swoole / swoole-src @ b8cce7c) (@matyhtf) - Suporte para
socket_read
configuração da opção PHP_NORMAL_READ (swoole / swoole-src @ b1a0dcc) (@matyhtf)
reparar
- Corrija
Coroutine::defer
o problema coredump no PHP8 (# 3997) (@huanghantao) - Corrija
Coroutine\Socket::errCode
o problema de configurações incorretas ao usar o contexto de thread (swoole / swoole-src @ 004d08a) (@matyhtf) - Corrija o problema de falha de compilação do Swoole nos macos mais recentes (# 4007) (@matyhtf)
- Corrija o problema de que o contexto do fluxo de php é um ponteiro nulo quando o parâmetro md5_file é passado para o url (# 4016) (@ZhiyangLeeCN)
Núcleo
- Use o pool de threads de AIO para conectar o stdio (Resolva o problema de leitura e gravação de multi-corrotina causado por tratar stdio como socket antes) (# 4002) (@matyhtf)
- Refatorar HttpContext (# 3998) (@matyhtf)
- Refatoração
Process::wait()
(# 4019) (@matyhtf)