Skip to content

Commit 7bd003b

Browse files
committed
Optimization
1 parent ed4b431 commit 7bd003b

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/Protocols/Http.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
use Workerman\Protocols\Http\Request;
2121
use Workerman\Protocols\Http\Response;
2222
use function clearstatcache;
23+
use function count;
2324
use function explode;
2425
use function filesize;
2526
use function fopen;
@@ -80,6 +81,10 @@ public static function requestClass(?string $className = null): string
8081
*/
8182
public static function input(string $buffer, TcpConnection $connection): int
8283
{
84+
static $input = [];
85+
if (isset($input[$buffer])) {
86+
return $input[$buffer];
87+
}
8388
$crlfPos = strpos($buffer, "\r\n\r\n");
8489
if (false === $crlfPos) {
8590
// Judge whether the package length exceeds the limit.
@@ -115,6 +120,14 @@ public static function input(string $buffer, TcpConnection $connection): int
115120
$connection->close("HTTP/1.1 413 Payload Too Large\r\n\r\n", true);
116121
return 0;
117122
}
123+
124+
if (!isset($buffer[TcpConnection::MAX_CACHE_STRING_LENGTH])) {
125+
$input[$buffer] = $length;
126+
if (count($input) > TcpConnection::MAX_CACHE_SIZE) {
127+
unset($input[key($input)]);
128+
}
129+
}
130+
118131
return $length;
119132
}
120133

@@ -139,7 +152,7 @@ public static function decode(string $buffer, TcpConnection $connection): Reques
139152
$request = new static::$requestClass($buffer);
140153
if (!isset($buffer[TcpConnection::MAX_CACHE_STRING_LENGTH])) {
141154
$requests[$buffer] = $request;
142-
if (\count($requests) > TcpConnection::MAX_CACHE_SIZE) {
155+
if (count($requests) > TcpConnection::MAX_CACHE_SIZE) {
143156
unset($requests[key($requests)]);
144157
}
145158
$request = clone $request;

0 commit comments

Comments
 (0)