为了提高性能,用 PHP 扩展实现了一个 JWT (JSON Web Token)

2018-05-24 09:54:20 +08:00
 gaozihang

目前 PHP 所有的 JWT 库都是用 PHP 语言编写的,为了提高性能,我基于 openssl 库,用 PHP 扩展实现了一个 JWT

GitHub: https://github.com/cdoco/php-jwt

例子

$key = "example-hmac-key";
$claims = array(
    "data" => [
        "name" => "ZiHang Gao",
        "admin" => true
    ],
    "iss" => "http://example.org",
    "sub" => "1234567890",
);

// default HS256 algorithm
$token = jwt_encode($claims, $key);

echo $token . PHP_EOL;
//eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.
//eyJpc3MiOiJodHRwOlwvXC9leGFtcGxlLm9yZyIsInN1YiI6IjEyMzQ1Njc4OTAiLCJuYW1lIjoiWmlIYW5nIEdhbyIsImFkbWluIjp0cnVlfQ.
//2lFeBTsRegsjXiBCZNkW41KFlsZPSFu7KTsyAM9lUiQ

print_r(jwt_decode($token, $key));
/**
Array
(
    [data] => Array
        (
            [name] => ZiHang Gao
            [admin] => 1
        )

    [iss] => http://example.org
    [sub] => 1234567890
)
*/
6478 次点击
所在节点    分享创造
13 条回复
oott123
2018-05-24 10:14:49 +08:00
怎么也得搞个 benchmark 让大家看看你的有多快啊,不然怎么吸引用户 233
qloog
2018-05-24 10:39:01 +08:00
能写出来就至少给个 666
predator
2018-05-24 10:48:14 +08:00
赞一个,7+的暂时只能在测试环境体验下先
gaozihang
2018-05-24 11:54:30 +08:00
@oott123 我自己跑的 benchmark,是 PHP 的 5-6 倍,后续会把 benchmark 贴出来 ~
wensonsmith
2018-05-24 13:21:30 +08:00
战略 Mark, 666
yongjing
2018-05-24 14:06:44 +08:00
66666
m939594960
2018-05-24 14:17:31 +08:00
好东西啊
swordne
2018-05-24 17:19:07 +08:00
star 一下。
LeungJZ
2018-05-24 19:22:54 +08:00
战略性马克。
习惯性 666。
vibbow
2018-05-24 19:25:50 +08:00
其实并没有太大作用,单个请求周期里,JWT 运算占用的总运算时间非常之少,哪怕性能提升 1w 倍对整个请求的响应时间也不会有什么显著改进的。

而且还会导致跨版本升级的时候还需要等你这个扩展支持新版本...

目前耗时大头应该都是数据库操作...
notreami
2018-05-24 22:47:05 +08:00
还不如加个缓存
changwei
2018-05-25 13:32:58 +08:00
jwt 的加解密操作主要都是用 php 扩展提供的加解密和序列化函数操作的,php 扩展函数本身就是 c 写的,理论来说纯扩展和 php 库的速度差别应该不大啊。
pushy
2018-05-25 16:15:20 +08:00
你的业务性能消耗在 JWT 上?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/457349

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX