- #1917 Fixed bug that
Request::isXmlHttpRequestdoes not work.
- #1793 Socket.io server now only dispatch connect/disconnect events in onOpen and onClose. Also upgrade some class members from private to protected, so users can hack them.
- #1734 Fixed the bug that the morph association is empty and cannot be queried.
- #1739 Fixed the wrong bitwise operator in oss hook.
- #1743 Fixed the wrong
refIdforgrafana.json. - #1748 Fixed
concurrent.limitdoes not works when using another pool. - #1750 Fixed the incorrent number of current connections when close failed.
- #1754 Fixed the wrong start info for base server.
- #1764 Fixed datetime validate failed when the value is null.
- #1769 Fixed a notice when client initiate disconnects in
socketio-server.
- #1724 Added
Model::orWhereHasMorph,Model::whereDoesntHaveMorphandModel::orWhereDoesntHaveMorph. - #1741 Added
Hyperf\Command\Command::choiceMultiple(): arraymethod, because the return type ofchoicemethod isstring, so the methed cannot handle the multiple selections, even though setted$multipleargument. - #1742 Added Custom Casts for model.
- Added interface
Castable,CastsAttributesandCastsInboundAttributes. - Added
Model\Builder::withCasts. - Added
Model::loadMorph,Model::loadMorphCountandModel::syncAttributes.
- Added interface
- #1723 Added filp/whoops integration in hyperf/exception-handler component.
- #1730 Added shortcut
-Rof--refresh-fillablefor commandgen:model.
- #1696 Fixed
Context::copydoes not works when use keys. - #1708 #1718 Fixed a series of issues for
hyperf/socketio-server.
- #1710 Don't set process title in Darwin OS.
- #1616 Added
morphWithandwhereHasMorphfor hyperf/database component. - #1651 Added socket.io-server component.
- #1666 #1669 Added support for AMQP RPC mode.
- #1682 Fixed the connection pool does not works in JSONRPC pool transporter.
- #1683 Fixed JSONRPC client connection reset failed, when the connection was closed in context.
- #1670 Optimized a meaningless redis delete instruction for cache component.
- #1645 Added parameter injection support for closure route.
- #1647 Added
Hyperf\ModelCache\Handler\RedisStringHandlerfor hyperf/model-cache component, store the cache data in string type. - #1654 Added
Hyperf\View\Exception\RenderExceptionto rethrow render exceptions in view.
- #1639 Fixed bug that the unhealthy node will be got from
consul. - #1641 Fixed request exception will be thrown when the JSONRPC result is null.
- #1641 Fixed service health check does not works for
jsonrpc-tcp-length-checkprotocol. - #1650 Fixed bug that command
describe:routeswill show the wrong list. - #1655 Fixed
MysqlProcessor::processColumnsdoes not work when the MySQL server is 8.0 version.
- #1636 Optimized
co-phpunitdo not broken in coroutine environment, when cases failed.
- #1575 Added document of property with relation, scope and attributes.
- #1586 Added conflict of symfony/event-dispatcher which < 4.3.
- #1597 Added
maxConsumptionfor amqp consumer. - #1603 Added WebSocket Context to save data from the same fd.
- #1553 Fixed the rpc client do not work, when jsonrpc server register the same service to consul with jsonrpc and jsonrpc-http protocol.
- #1589 Fixed unsafe file locks in coroutines.
- #1607 Fixed bug that the return value of function
gois not adaptive withswoole. - #1624 Fixed
describe:routesfailed when router handler isClosure.
- #1578 Support
getStreammethod inUploadedFile.php.
- #1603 Added connection level context for
hyperf/websocket-server.
- #1563 Fixed crontab's
onOneServeroption not resetting mutex on shutdown. - #1565 Reset transaction level to zero, when reconnent to mysql server.
- #1572 Fixed parent class does not exists in
Hyperf\GrpcServer\CoreMiddleware. - #1577 Fixed
describe:routescommand'sserveroption not take effect. - #1579 Fixed
migrate:refreshcommand'sstepis int.
- #1560 Changed functions of file to
filesystemforFileSystemDriverinhyperf/cache. - #1568 Changed
\RedistoRedisProxyforRedisDriverinasync-queue.
- #1532 Fixed interface 'Symfony\Component\EventDispatcher\EventDispatcherInterface' not found.
- #1501 Bridged Symfony command events to Hyperf event dispatcher.
- #1502 Added
maxAttemptsparameter forHyperf\AsyncQueue\Annotation\AsyncQueueMessageannotation to control the maximum retry time of job. - #1510 Added
Hyperf/Utils/CoordinatorManagerto better handling of graceful start and graceful stop. - #1517 Added support lazy-loading over interface inheritance and abstract method inheritance etc.
- #1529 Handled SameSite property of response cookies.
- #1494 Ignore
@mixinannotation in redis component. - #1499 Fixed dynamic parameter does not work after requiring translation for
hyperf/constants. - #1504 Fixed the proxy client of RPC does not handle the Nullable return type.
- #1507 Fixed consul catalog register method, modified to PUT from GET.
- #1467 Added default configuration for filesystem component.
- #1469 Added method
getHandler()forHyperf/Guzzle/HandlerStackFactoryand usemake()function to create the handler instead ofnewoperator when it is possible. - #1480 RPC client will generate the methods of inherited interface automatically now.
- #1471 Fixed data recved failed, when the body is larger than max-output-buffer-size.
- #1472 Fixed consume failed when publish message in consumer of NSQ.
- #1474 Fixed the consumer of NSQ will restart when requeue message.
- #1477 Fixed Invalid argument supplied for
Hyperf\Testing\Client::flushContext.
- #1481 Creating message with
makeinstead ofnewforasync-queue.
- #1440 Added config
enableof every NSQ connection to control the consumer whether they start automatically. - #1451 Added Filesystem component.
- #1459 Support macroable model, as laravel does.
- #1463 Added option
on_statsfor guzzle handler.
- #1445 Fixed command describe:route missing variable route.
- #1449 Fixed memory overflow for high cardinality request path.
- #1454 Fixed
flatten()failed, bacauseINFisfloat. - #1458 Fixed guzzle handler not support elasticsearch which version is larger than 7.0.
- #1393 Implemented more methods for
Hyperf\HttpMessage\Stream\SwooleStream. - #1419 Allow config fetcher to start in a coroutine instead of a process.
- #1424 Allow user modify the session_name by configuration file.
- #1435 Added config
use_default_valuefor model-cache to correct the cache data with database data automatically. - #1436 Added
isEnable()for NSQ Consumer to control the consumer whether they start automatically.
- #1402 Added
Hyperf\DbConnection\Annotation\Transactionalannotation to begin a transaction automatically. - #1412 Added
Hyperf\View\RenderInterface::getContents()method to get the contents of view render directly. - #1416 Added Swoole event constant
ON_WORKER_ERROR.
- #1405 Fixed the cached attributes are not right, when the model has property
hidden. - #1410 Fixed tracer cannot trace the call chains of redis connection that created by
Hyperf\Redis\RedisFactory. - #1415 Fixed the bug that Aliyun acm client decode sts token failed when optional header
SecurityTokenis empty.
- #1339 #1394 Added
describe:routescommand to describe the routes information by command. - #1354 Added ecs ram authorization for
config-aliyun-acm. - #1362 Added
getPoolNames()method forHyperf\Pool\SimplePool\PoolFactory. - #1371 Added
Hyperf\DB\DB::connection()to use the specified connection.
- #1384 Added option
property-casefor commandgen:model.
- #1386 Fixed variadic arguments do not work in async message annotation.
- #1305 Added pre-made
Grafanadashboard forhyperf\metric. - #1328 Added
ModelRewriteInheritanceVisitorto rewrite the model inheritance for commandgen:model. - #1331 Added
Hyperf\LoadBalancer\LoadBalancerInterface::getNodes(). - #1335 Added event
AfterExecuteforcommand. - #1361 Added config of
processorsfor logger.
- #1324
Hyperf\AsyncQueue\Listener\QueueLengthListeneris no longer as the default listener of hyperf/async-queue.
- #1305 Optimize edge cases in
hyperf\metric. - #1322 HTTP Server Handle HEAD request automatically, now will not response the body on HEAD request.'
- #1303 Deleted useless
$httpMethodforHyperf\RpcServer\Router\Router.
- #1330 Fixed bug when using
(new Parallel())->add($callback, $key)and the parameter$keyis a not string index, the returned result will sort$keyfrom 0. - #1338 Fixed bug that root settings do not works when the slave servers set their own settings.
- #1344 Fixed bug that queue length check every time when not set max messages.
- #1288 Added driver object into
Hyperf\AsyncQueue\Event\QueueLengthevent as the first parameter - #1292 Added
Hyperf\Database\Schema\ForeignKeyDefinitionfor return type ofHyperf\Database\Schema\Blueprint::foreign()method. - #1313 Added Command mode support to
hyperf\crontab. - #1321 Added hyperf/nsq component, NSQ is a realtime distributed messaging platform.
- #1291 Fixed
$_SERVERhas lower keys for super-globals. - #1302 Fixed JSONRPC reconnect failed, when the node is invalid.
- #1308 Fixed some missing traslation of validation, like gt, gte, ipv4, ipv6, lt, lte, mimetypes, not_regex, starts_with, uuid.
- #1310 Fixed register failed because has the exactly same service.
- #1315 Fixed the missing config variable for
Hyperf\AsyncQueue\Process\ConsumerProcess.
- #1263 Added Event
QueueLengthfor async-queue. - #1276 Added ACL token for Consul client.
- #1277 Added NoOp Driver to hyperf/metric.
- #1262 Fixed bug that socket of keepaliveIO always exhausted.
- #1266 Fixed bug that process does not restart when use timer.
- #1272 Fixed bug that request id will be checked failed, when the id is null.
- #1273 Optimized grpc client.
- gRPC client now automatically reconnects to the server after disconnection.
- When gRPC client is garbage collected, the connection is automatically closed.
- Fixed a bug where a closed gRPC client still holds the underlying http2 connection.
- Fixed a bug where channel pool for gRPC may contain non-empty channels.
- gRPC client now initializes itself lazily, so it can be used in constructor and container.
- #1286 Removed phpstan/phpstan requires from require-dev.
- #1258 Fixed CRITICAL error that socket of process is unavailable when amqp send heartbeat failed.
- #1260 Fixed json rpc connection confused.
- #1166 Added KeepaliveIO for amqp.
- #1208 Added exception code
error.data.codeto json-rpc response. - #1208 Added
recvmethod toHyperf\Rpc\Contract\TransporterInterface. - #1215 Added super-globals component.
- #1219 Added property
enablefor amqp consumer, which controls whether consumers should start along with the service.
- #1208 Fixed bug that exception and error cannot be resolved successfully in TcpServer.
- #1208 Fixed bug that json-rpc has not validated the request id whether is equal to response id.
- #1223 Fixed the scanner will missing the packages at require-dev of composer.json
- #1254 Fixed bash not found on some environment like Alpine when execute
init-proxy.sh.
- #1208 Optimized json-rpc logical.
- #1174 Adjusted the format of exception printer of
Hyperf\Utils\Parallel. - #1224 Allows config fetcher of Aliyun ACM parse UTF-8 charater, and fetch configuration once after worker start automatically, also allows pass the configutation to user process.
- #1235 Release connection after declared for amqp producers.
- #1227 Upgraded jcchavezs/zipkin-php-opentracing to 0.1.4.
- #1137 Added translator for constants.
- #1165 Added a method
routeforHyperf\HttpServer\Contract\RequestInterface. - #1195 Added max offset for
CacheableandCachePut. - #1204 Added
insertOrIgnorefor database. - #1216 Added default value for
$dataofRenderInterface::render(). - #1221 Added
traceIdandspanIdof theswoole-trackercomponent.
- #1175 Fixed
Hyperf\Utils\Collection::randomdoes not works when the number is null. - #1199 Fixed variadic arguments do not work in task annotation.
- #1200 Request path shouldn't include query parameters in hyperf/metric middleware.
- #1210 Fixed validation
sizedoes not works withoutnumericorintegerrules when the type of value is numeric.
- #1211 Convert app name to valid prometheus namespace.
- #1217 Replaced
zendframework/zend-mimeintolaminas/laminas-mine.
- #1177 Added protocol
jsonrpc-tcp-length-checkforjsonrpc.
- #1175 Fixed
Hyperf\Utils\Collection::randomdoes not works when the number is null. - #1178 Fixed
Hyperf\Database\Query\Builder::chunkByIddoes not works when the collection item is array. - #1189 Fixed default operator does not works for
Hyperf\Utils\Collection::operatorForWhere.
- #1186 Automatically added default constructor's configuration, when you forgetton to set it.
- #849 Added configuration of span tag for
tracercomponent.
- #1142 Fixed bug that Register::resolveConnection will return null.
- #1144 Fixed rate-limit config does not works.
- #1145 Fixed error return value for method
CoroutineMemoryDriver::delKey. - #1153 Fixed validation rule
alpha_numdoes not works.
- #1104 Fixed guzzle will be retried when the response has the correct status code 2xx.
- #1105 Fixed Retry Component not restoring pipeline stack before retry attempts.
- #1106 Fixed bug that sticky mode will affect the next request.
- #1119 Fixed JSONRPC on TCP Server cannot response the expected error response when cannot unpack the data.
- #1124 Fixed Session middleware does not store the current url correctly when the path of url end with a slash.
- #1108 Renamed
Hyperf\Tracer\Middleware\TraceMiddewaretoHyperf\Tracer\Middleware\TraceMiddleware. - #1108 Upgrade the access level of methods and properties of
Hyperf\ServiceGovernance\Listener\ServiceRegisterListener, for better override it.
- #948 Added Lazy loader to DI.
- #1044 Added
basic_qosfor amqp consumer. - #1056 #1081 Added
define()andset()to Container. AddedHyperf\Contract\ContainerInterface. - #1059 Added constructor for
job.stub. - #1084 Added php 7.4 support.
- #1049 Fixed
Hyperf\Cache\Driver\RedisDriver::clearsometimes fails to delete all caches. - #1055 Fixed image extension validation failed.
- #1085 #1091 Fixed broken retry annotation.
- #1007 Optimized
vendor:: publishreturn value does not support null.
- #1013 Fixed config of JsonRpcPoolTransporter merge failed.
- #1006 Fixed the order of properties of Model.
- #1021 Added default port to WebSocket client.
- #1014 Optimized
Command:: executereturn value does not support null. - #1022 Provided cleaner connection pool error message without implementation details.
- #1039 Updated the ServerRequest object to context in CoreMiddleware automatically.
- #1034 The property
argumentsofHyperf\Amqp\Builder\Buildernot only support array.
- #860 Added retry component.
- #952 Added think template engine for view.
- #973 Added
Hyperf\JsonRpc\JsonRpcPoolTransporter. - #976 Added params
close_on_destructforhyperf/amqp.
- #955 Fixed bug that port and charset do not work for
hyperf/db. - #956 Fixed bug that
RedisHandler::incrfails in cluster mode for model cache. - #966 Fixed type error, when use paginator in non-worker process.
- #968 Fixed aspect does not works when class and annotation exist at the same time.
- #980 Fixed
migrate,saveandhasmethods of Session do not work as expected. - #982 Fixed
Hyperf\GrpcClient\GrpcClient::yielddoes not get the correct channel pool. - #987 Fixed missing method call
parent::configure()ofcommand.stub.
- #991 Optimized
Hyperf\DbConnection\ConnectionResolver::connection.
- #944 Replaced annotation
@Listenerand@Processinto config whichlistenersandprocessesinConfigProvider. - #977 Changed
init-proxy.shcommand to only delete theruntime/containerdirectory.
- #827 Added a simple db component.
- #905 Added twig template engine for view.
- #911 Added support for crontab task run on one server.
- #913 Added
Hyperf\ExceptionHandler\Listener\ErrorExceptionHandler. - #931 Added
strict_modefor config-apollo. - #933 Added plates template engine for view.
- #937 Added consume events for nats.
- #941 Added an zookeeper adapter for Hyperf config component.
- #897 Fixed connection pool of
Hyperf\Nats\Annotation\Consumerdoes not works as expected. - #901 Fixed Annotation
Factorydoes not works for GraphQL. - #903 Fixed execute
init-proxycommand can not stop whenhyperf/rpc-clientcomponent exists. - #904 Fixed the hooked I/O request does not works in the listener that listening
Hyperf\Framework\Event\BeforeMainServerStartevent. - #906 Fixed
portproperty of URI ofHyperf\HttpMessage\Server\Request. - #907 Fixed the expire time is double of the config for
requestSyncin nats. - #909 Fixed a issue that causes staled parallel execution.
- #925 Fixed the dead cycle caused by socket closed.
- #932 Fixed
Translator::setLocaledoes not works in coroutine evnironment. - #940 Fixed WebSocketClient::push TypeError, expects integer, but boolean given.
- #907 Optimized nats consumer process restart frequently.
- #928 Optimized
Hyperf\ModelCache\Cacheable::queryto delete the model cache when batch update - #936 Optimized
incrementto atomic operation for model-cache.
- #934 WaitGroup inherit \Swoole\Coroutine\WaitGroup.
- #812 Added singleton crontab task support.
- #820 Added nats component.
- #832 Added
Hyperf\Utils\Codec\Json. - #833 Added
Hyperf\Utils\Backoff. - #852 Added a
clear()method forHyperf\Utils\Parallelto clear added callbacks. - #854 Added
GraphQLMiddleware. - #859 Added Consul cluster mode support, now available to fetch the service information from Consul cluster.
- #873 Added redis cluster.
- #831 Fixed Redis client can not reconnect the server after the Redis server restarted.
- #835 Fixed
Request::inputsdefault value does not works. - #841 Fixed migration does not take effect under multiple data sources.
- #844 Fixed the reader of
composer.jsondoes not support the root namespace. - #846 Fixed
scanhScanzScanandsScandon't works for Redis. - #850 Fixed logger group does not works when the name is same.
- #832 Optimized that response will throw a exception when json format failed.
- #840 Use
\Swoole\Timer::*to instead ofswoole_timer_*functions. - #859 Optimized the logical of fetch health nodes infomation from consul.
- #778 Added
PUTandDELETEforHyperf\Testing\Client. - #784 Add Metric Component
- #795 Added
restartIntervalforAbstractProcess. - #804 Added
BeforeHandleAfterHandleandFailToHandlefor command.
- #779 Fixed bug that JPG file cannot be verified.
- #787 Fixed bug that "--class" option does not exist.
- #795 Fixed process not restart when throw an exception.
- #796 Fixed
config_etcd.enabledoes not works.
- #781 Publish validation language package according to translation setting.
- #796 Don't remake HandlerStack for etcd.
- #797 Use channel to communicate, instead of sharing mem
- #793 Changed
protectedtopublicforPool::getConnectionsInChannel. - #811 Command
di:init-proxydoes not clear the runtime cache, If you want to delete them, usevendor/bin/init-proxy.shinstead.
- #745 Added option
with-commentsfor commandgen:model. - #747 Added
AfterConsume,BeforeConsume,FailToConsumeevents for AMQP consumer. - #762 Add concurrent for parallel.
- #741 Fixed
db:seedwithout filename. - #748 Fixed bug that
SymfonyNormalizernot denormalize result of typearray. - #769 Fixed invalid response exception throwed when result/error of jsonrpc response is null.
- #767 Renamed property
runningtolisteningforAbstractProcess.
- #722 Added config
concurrent.limitfor AMQP consumer.
- #678 Added ignore-tables for
gen:model, and ignoremigrationstable, andmigrationstable will not generate when execute thegen:modelcommand. - #729 Renamed config
db:modeltogen:model.
- #678 Added ignore-tables for
gen:model, and ignoremigrationstable. - #694 Fixed
validationDatamethod ofHyperf\Validation\Request\FormRequestdoes not contains the uploaded files. - #700 Fixed the
downloadmethod ofHyperf\HttpServer\Contract\ResponseInterfacedoes not works as expected. - #701 Fixed the custom process will not restart automatically when throw an uncaptured exception.
- #704 Fixed bug that
Call to a member function getName() on nullinHyperf\Validation\Middleware\ValidationMiddlewarewhen the argument of action method does not define the argument type. - #713 Fixed
ignoreAnnotationsdoes not works when cache is used. - #717 Fixed the validator will be created repeatedly in
getValidatorInstance. - #724 Fixed
db:seedcommand without database selected. - #737 Fixed custom process does not enable for tracer.
- #664 Changed the default return value of FormRequest::authorize which generate via
gen:requestcommand. - #665 Fixed framework will generate proxy class of all classes that in app directory every time.
- #667 Fixed trying to get property 'callback' of non-object in
Hyperf\Validation\Middleware\ValidationMiddleware. - #672 Fixed
Hyperf\Validation\Middleware\ValidationMiddlewarewill throw an unexpected exception when the action method has defined a non-object parameter. - #674 Fixed the table of Model is not correct when using
gen:model.
- #401 Optimized server and fixed middleware that user defined does not works.
- #402 Added Annotation
@AsyncQueueMessage. - #418 Allows send WebSocket message to any
fdin current server, even the worker process does not hold thefd - #420 Added listener for model.
- #429 #643 Added validation component, a component similar to illuminate/validation.
- #441 Automatically close the spare redis client when it is used in low frequency.
- #478 Adopt opentracing interfaces and support Jaeger.
- #500 Added fluent method calls of
Hyperf\HttpServer\Contract\ResponseInterface. - #523 Added option
table-mappingfor commanddb:model. - #555 Added global function
swoole_hook_flagsto get the hook flags by constantSWOOLE_HOOK_FLAGS, and you could define inbin/hyperf.phpvia! defined('SWOOLE_HOOK_FLAGS') && define('SWOOLE_HOOK_FLAGS', SWOOLE_HOOK_ALL);to define the constant. - #596 #658 Added
requiredparameter for@Inject, if you define@Inject(required=false)annotation to a property, therefore the DI container will not throw anHyperf\Di\Exception\NotFoundExceptionwhen the dependency of the property does not exists, the default value ofrequiredparameter istrue. In constructor injection mode, you could define the default value of the parameter of the__constructtonullor define the parameter as anullableparameter , this means this parameter is nullable and will not throw the exception too. - #597 Added concurrent for async-queue.
- #599 Allows set the retry seconds according to attempt times of async queue consumer.
- #619 Added HandlerStackFactory of guzzle.
- #620 Add automatic restart mechanism for consumer of async queue.
- #629 Allows to modify the
clientIp,pullTimeout,intervalTimeoutof Apollo client via config file. - #648 Added
nackreturn type of AMQP consumer, the abstract consumer will executebasic_nackmethod when the message handler return aHyperf\Amqp\Result::NACK. - #654 Added all Swoole events and abstract hyperf events.
- #437 Changed
Hyperf\Testing\Clienthandle exception handlers instead of throw an exception directly. - #463 Simplify
container.phpand improve annotation caching mechanism.
config/container.php
<?php
use Hyperf\Di\Container;
use Hyperf\Di\Definition\DefinitionSourceFactory;
use Hyperf\Utils\ApplicationContext;
$container = new Container((new DefinitionSourceFactory(true))());
if (! $container instanceof \Psr\Container\ContainerInterface) {
throw new RuntimeException('The dependency injection container is invalid.');
}
return ApplicationContext::setContainer($container);- #486 Changed
getParsedBodyof Request is available to return JSON formatted data normally. - #523 The command
db:modelwill generate the singular class name of an plural table as default. - #614 #617 Changed the structure of config provider, also moved
config/dependencies.phptoconfig/autoload/dependencies.php, also you could placedependenciesinto config/config.php.
Changed the structure of config provider:
Before:
'scan' => [
'paths' => [
__DIR__,
],
'collectors' => [],
],Now:
'annotations' => [
'scan' => [
'paths' => [
__DIR__,
],
'collectors' => [],
],
],- #630 Changed the way to instantiate
Hyperf\HttpServer\CoreMiddleware, usemake()instead ofnew. - #631 Changed the way to instantiate AMQP Consumer, use
make()instead ofnew. - #637 Changed the argument 1 of
Hyperf\Contract\OnMessageInterfaceandHyperf\Contract\OnOpenInterface, useSwoole\WebSocket\Serverinstead ofSwoole\Server. - #638 Renamed command
db:modeltogen:modeland added rewrite connection name visitor.
- #401 Deleted class
Hyperf\JsonRpc\HttpServerFactory,Hyperf\HttpServer\ServerFactory,Hyperf\GrpcServer\ServerFactory. - #402 Deleted deprecated method
AsyncQueue::delay. - #563 Deleted deprecated constants
Hyperf\Server\ServerInterface::SERVER_TCP, useHyperf\Server\ServerInterface::SERVER_BASEto instead of it. - #602 Removed timeout property of
Hyperf\Utils\Coroutine\Concurrent. - #612 Deleted useless
$urlfor RingPHP Handlers. - #616 #618 Deleted useless code of guzzle.
- #644 Optimized annotation scan process, separate to two scan parts
appandvendor, greatly decrease the elapsed time. - #653 Optimized the detect logical of swoole shortname.
- #448 Fixed TCP Server does not works when HTTP Server or WebSocket Server exists.
- #623 Fixed the argument value will be replaced by default value when pass a
nullto the method of proxy class. - #647 Append
eofto TCP response, according to the server configuration.
- #636 Fixed http client with pool handler may be used by different coroutine at the same time.
- #636 Fixed http client with pool handler may be used by different coroutine at the same time.
- #564 Fixed typehint error, when
Coroutine\Http2\Client->sendfailed. - #567 Fixed rpc-client
getReturnTypefailed, when the name is not equal of service. - #571 Fixed the next request will be effected after using stopPropagation.
- #579 Dynamic init snowflake meta data, fixed the problem that when using snowflake in command mode (e.g.
di:init-proxy) will connect to redis server and wait timeout.
- #583 Throw
GrpcClientException, whenBaseClient::startfailed. - #585 Throw exception when execute failed in task worker.
- #534 Fixed Guzzle HTTP Client does not handle the response status is equal to
-3; - #541 Fixed bug grpc client cannot be set correctly.
- #542 Fixed
Hyperf\Grpc\Parser::parseResponsereturns a non-standard error code for grpc. - #551 Fixed infinite loop in grpc client when the server closed the connection.
- #558 Fixed UDP Server does not works.
- #545 Deleted useless static methods
restoringandrestoredof trait SoftDeletes.
- #549 Optimized
readandwriteofHyperf\Amqp\Connection\SwooleIO. - #559 Optimized
redirectofHyperf\HttpServer\Response. - #560 Optimized class
Hyperf\WebSocketServer\CoreMiddleware.
- #558 Marked
Hyperf\Server\ServerInterface::SERVER_TCPas deprecated, will be removed inv1.1.
- #389 #419 #432 #524 #531 Added snowflake component, snowflake is a distributed global unique ID generation algorithm put forward by Twitter, this component implemented this algorithm for easy to use.
- #525 Added
download()method ofHyperf\HttpServer\Contract\ResponseInterface.
- #482 Re-generate the
fillableargument of Model when userefresh-fillableoption, at the same time, the command will keep thefillableargument as default behaviours. - #501 When the path argument of Mapping annotation is an empty string, then the path is equal to prefix of Controller annotation.
- #513 Rewrite process name with
app_name. - #508 #526 When execute
Hyperf\Utils\Coroutine::parentId()static method in non-coroutine context will return null.
- #479 Fixed typehint error when host of Elasticsearch client does not reached.
- #514 Fixed redis auth failed when the password is an empty string.
- #527 Fixed translator cannot translate repeatedly.
- #428 Added an independent component hyperf/translation, forked by illuminate/translation.
- #449 Added standard error code for grpc-server.
- #450 Added comments of static methods for
Hyperf\Database\Schema\Schema.
- #451 Removed routes of magic methods from
AuthController. - #468 Default exception handlers catch all exceptions.
- #466 Fixed error when the number of data is not enough to paginate.
- #466 Optimized
vendor:publishcommand, if the destination folder exists, then will not repeatedly create the folder.
- #405 Added Context::override() method.
- #415 Added handlers configuration for logger, now you could config multiple handlers to logger.
- #431 The third parameter of Hyperf\GrpcClient\GrpcClient::openStream() have been removed.
- #414 Fixed WebSocketExceptionHandler typo
- #424 Fixed proxy configuration of
Hyperf\Guzzle\CoroutineHandlerdoes not support array parameter. - #430 Fixed file() method of Request will threw an exception, when upload files with same name of form.
- #431 Fixed missing parameters of the grpc request.
- #425 Marked
Hyperf\HttpServer\HttpServerFactory,Hyperf\JsonRpc\HttpServerFactory,Hyperf\JsonRpc\TcpServerFactoryas deprecated, will be removed inv1.1.
- #366 Added
Hyperf\Server\Listener\InitProcessTitleListenerto init th process name, also addedHyperf\Framework\Event\OnStartandHyperf\Framework\Event\OnManagerStartevents. - #389 Added Snowflake component.
- #361 Fixed command
db:modeldoes not works inMySQL 8. - #369 Fixed the exception which implemented
\Serializable, callserialize()andunserialize()functions failed. - #384 Fixed the
ExceptionHandlerthat user defined does not works, because the framework has handled the exception automatically. - #370 Fixed set the error type client to
Hyperf\GrpcClient\BaseClient, and added default content-typeapplication/grpc+prototo the Request object, also allows the grpc client that user-defined to override thebuildRequest()method to create a new Request object.
- #356 #390 Optimized aysnc-queue when push a job that implemented
Hyperf\Contract\CompressInterface, will compress the job to a small object automatically. - #358 Only write the annotation cache file when
$enableCacheistrue. - #359 #390 Added compression ability for
CollectionandModel, if the object implementedHyperf\Contract\CompressInterface, then the object could compress to a small one by callcompressmethod.
- #321 Adding custom object types of array support for the Controller/RequestHandler parameter of HTTP Server, especially for JSON RPC HTTP Server, now you can get support for auto-deserialization of objects by defining
@var Object[]on the method. - #324 Added NodeRequestIdGenerator, an implementation of
Hyperf\Contract\IdGeneratorInterface - #336 Added Dynamic Proxy RPC Client.
- #346 #348 Added filesystem driver for
hyperf/cache.
- #330 Hidden the scan message of DI when $paths is empty.
- #328 Added support for user defined project path according to the rules defined by composer.json's psr-4 autoload.
- #329 Optimized exception handler of rpc-server and json-rpc component.
- #340 Added support for
makefunction accept index-based array as parameters. - #349 Renamed the class name below, fixed the typo.
| Before | After |
|---|---|
| Hyperf\Database\Commands\Ast\ModelUpdateVistor | Hyperf\Database\Commands\Ast\ModelUpdateVisitor |
| Hyperf\Di\Aop\ProxyClassNameVistor | Hyperf\Di\Aop\ProxyClassNameVisitor |
| Hyperf\Di\Aop\ProxyCallVistor | Hyperf\Di\Aop\ProxyCallVisitor |
- #325 Fixed check the service registration status via consul services more than one times.
- #332 Fixed type error in
Hyperf\Tracer\Middleware\TraceMiddeware, only appears in openzipkin/zipkin v1.3.3+. - #333 Fixed Redis::delete() method has been removed in redis 5.0+.
- #334 Fixed the configuration fetch from aliyun acm is not work expected in some case.
- #337 Fixed the server will return 500 Response when the key of header is not a string.
- #338 Fixed the problem of
ProviderConfig::loadwill convert a string to a array when the dependencies has the same key in deep merging.
- #317 Added composer-json-fixer and Optimized composer.json. @wenbinye
- #320 DI added support for closure definition.
- #300 Let message queues run in sub-coroutines. Fixed async queue attempts twice to handle message, but only once actually.
- #305 Fixed
$keyof methodArr::setnot supportintandnull. - #312 Fixed amqp process collect listener will be handled later than the process boot listener.
- #315 Fixed config etcd center not work after worker restart or in user process.
- #318 Fixed service will register to service center ceaselessly.
- #323 Force convert type of
$ttlin annotationCacheableandCachePutinto int.
- #297 If register service failed, then sleep 10s and re-register, also hided the useless exception message when register service failed.
- #298 #301 Adapted openzipkin/zipkin v1.3.3+
- #271 Fixed aop only rewrite the first method in classes and method patten is not work.
- #285 Fixed anonymous class should not rewrite in proxy class.
- #286 Fixed not auto rollback when forgotten to commit or rollback in multi transactions.
- #292 Fixed
$defaultis not work in methodRequest::header. - #293 Fixed
$keyof methodArr::getnot supportintandnull.
- #266 Fixed timeout when produce a amqp message.
- #273 Fixed all services have been registered to Consul will be deleted by the last register action.
- #274 Fixed the content type of view response.
- #203 #236 #247 #252 Added View component, support for Blade engine and Smarty engine.
- #203 Added support for Swoole Task mechanism.
- #245 Added TaskWorkerStrategy and WorkerStrategy crontab strategies.
- #251 Added coroutine memory driver for cache.
- #254 Added support for array value of
RequestMapping::$methods,@RequestMapping(methods={"GET"})and@RequestMapping(methods={RequestMapping::GET})are available now. - #255 Transfer
Hyperf\Utils\Contracts\Arrayableresult of Request to Response automatically, and addedtext/plaincontent-type header for string Response. - #256 If
Hyperf\Contract\IdGeneratorInterfaceexist, thejson-rpcclient will generate a Request ID via IdGenerator automatically, and stored in Request attibute. Also added support for service register and health checks ofjsonrpcTCP protocol.
- #247 Use
WorkerStrategyas the default crontab strategy. - #256 Optimized error handling of json-rpc, server will response a standard json-rpc error object when the rpc method does not exist.
- #235 Added default exception handler for
grpc-serverand optimized code. - #240 Fixed OnPipeMessage event will be dispatch by another listener.
- #257 Fixed cannot get the Internal IP in some special environment.
- #185 #224 Added support for xml format of response.
- #202 Added trace message when throw a uncaptured exception in function
go. - #138 #197 Added crontab component.
- #195 Changed the behavior of parameter
$timesofretry()function, means the retry times of the callable function. - #198 Optimized
has()method ofHyperf\Di\Container, if pass a un-instantiable object (like an interface) to$container->has($interface), the method result isfalsenow. - #199 Re-produce one times when the amqp message produce failure.
- #200 Make tests directory out of production package.
- #176 Fixed TypeError: Return value of LengthAwarePaginator::nextPageUrl() must be of the type string or null, none returned.
- #188 Fixed proxy of guzzle client does not work expected.
- #211 Fixed rpc client will be replaced by the latest one.
- #212 Fixed config
ssl_keyandcertof guzzle client does not work expected.
- #140 Support Swoole v4.4.0.
- #163 Added custom arguments support to AbstractConstants::__callStatic in
hyperf/constants.
- #124 Added
$delayparameter forDriverInterface::push, and markedDriverInterface::delaymethod to deprecated. - #125 Changed the default value of parameter $default of config() function to null.
- #110 #111 Fixed Redis::select is not work expected.
- #131 Fixed property middlewares not work in
Router::addGroup. - #132 Fixed request->hasFile does not work expected.
- #135 Fixed response->redirect does not work expected.
- #139 Fixed the BaseUri of ConsulAgent will be replaced by default BaseUri.
- #148 Fixed cannot generate the migration when migrates directory does not exist.
- #152 Fixed db connection will not be closed when a low use frequency.
- #169 Fixed array parse failed when handle http request.
- #170 Fixed websocket server interrupt when request a not exist route.
- #131 Removed
serverproperty from Router options.
- #48 Added WebSocket Client.
- #51 Added property
enableCachetoDefinitionSourceto enable annotation cache. - #61 Added property type of
Modelcreated by commanddb:model. - #65 Added JSON support for model-cache.
- Added WebSocket Server.
- #46 Removed hyperf/framework requirement of
hyperf/di,hyperf/commandandhyperf/dispatcher.
- #45 Fixed http server start failed, when the skeleton included
hyperf/websocket-server. - #55 Fixed the method level middleware annotation.
- #73 Fixed short name is not work for
db:model. - #88 Fixed prefix is not right in deep directory.
- #101 Fixed constants resolution failed when no message annotation exists.
- Fixed http server will be affected of websocket server.
- Fixed proxy class
- Fixed database pool will be fulled in testing.
- Fixed co-phpunit work not expected.
- Fixed model event
creating,updating... not work expected. - Fixed
flushContextnot work expected for testing.