La versión v4.6.2 es principalmente una versión de corrección de errores sin cambios incompatibles hacia abajo.
Agregado Coroutine\Socket->recvLine()
y Coroutine\Socket->readWithBuffer()
método
Se utilizan para resolver problemas de compatibilidad socket_read y recv(1)
una gran cantidad de problemas de llamadas al sistema cuando se usa la recepción byte a byte.
Al mismo tiempo, se mejora el Response\create()
método, que se puede utilizar independientemente del servidor, como por ejemplo:
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 una solicitud después del inicio
$ 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
El terminal imprimirá los parámetros GET en la solicitud
array(1) {
["hello"]=>
string(6) "swoole"
}
El siguiente es el registro de actualización completo:
Nueva API
- Nuevo
Http\Request\getMethod()
método (# 3987) (@ luolaifa000) - Nuevo
Coroutine\Socket->recvLine()
método (# 4014) (@matyhtf) - Nuevo
Coroutine\Socket->readWithBuffer()
método (# 4017) (@matyhtf)
Mejorar
Response\create()
Método mejorado , se puede utilizar independientemente del servidor (# 3998) (@matyhtf)- Admite
Coroutine\Redis->hExists
devolver el tipo bool después de configurar el modo de compatibilidad (swoole / swoole-src @ b8cce7c) (@matyhtf) - Admite la
socket_read
configuración de la opción PHP_NORMAL_READ (swoole / swoole-src @ b1a0dcc) (@matyhtf)
reparar
- Solucione
Coroutine::defer
el problema de coredump en PHP8 (# 3997) (@huanghantao) - Solucione
Coroutine\Socket::errCode
el problema de la configuración incorrecta al usar el contexto del hilo (swoole / swoole-src @ 004d08a) (@matyhtf) - Solucione el problema de que la compilación de Swoole falla en la última versión de macos (# 4007) (@matyhtf)
- Solucione el problema de que el contexto del flujo de php es un puntero nulo cuando el parámetro md5_file se pasa a la url (# 4016) (@ZhiyangLeeCN)
Núcleo
- Use el grupo de subprocesos AIO para conectar stdio (resuelva el problema de lectura y escritura de múltiples rutinas causado por tratar stdio como socket antes) (# 4002) (@matyhtf)
- Refactorizar HttpContext (# 3998) (@matyhtf)
- Refactorización
Process::wait()
(# 4019) (@matyhtf)