Closed iQiFengLe closed 1 year ago
这么严重的问题作者竟然不解决,最好的解决办法就是让 Lcobucci\JWT\Claim\Factory
变成单例
修改 src/Util/JWTUtil.php
declare(strict_types=1);
namespace Phper666\JWTAuth\Util;
use Lcobucci\JWT\Builder;
use Lcobucci\JWT\Claim\Factory as ClaimFactory;
use Lcobucci\JWT\Parser;
use Lcobucci\JWT\Parsing\Decoder;
use Lcobucci\JWT\Parsing\Encoder;
use Lcobucci\JWT\ValidationData;
use Hyperf\Utils\ApplicationContext;
/**
* Created by PhpStorm.
* User: liyuzhao
* Date: 2020/4/21
* Time: 1:51 下午
*/
class JWTUtil
{
//....
public static function getParser(Decoder $decoder = null, ClaimFactory $claimFactory = null)
{
empty($claimFactory) && $claimFactory = ApplicationContext::getContainer()->get(ClaimFactory::class);
return new Parser($decoder, $claimFactory);
}
//...
ok,解决
已经支持php8,可以更新到4.0.x版本试试,更新时,请看下redeme
Lcobucci\JWT\Claim\Factory 该类的构造方法:
由于自己将自己引用了,导致new 出的对象无法释放。 如图: 由于自我引用导致 new 一次内存增加一次,且大概率不会释放(偶尔也会释放一次,不过时间很长);
解决方法:继承Lcobucci\JWT\Claim\Factory 类覆写全部方法
修改两个方法
再次测试