Lanzamiento de la versión Swoole v4.6.2, versión de corrección de errores

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)

Supongo que te gusta

Origin www.oschina.net/news/127801/swoole-4-6-2-released
Recomendado
Clasificación