PHP 与 NodeJS 如何共用 Session?
程序员文章站
2024-01-19 17:16:28
...
回复内容:
没有问题描述,也不知道你都尝试过哪些方法,只能假设你的场景是“node如何读取php session”,这应该是最常见的情况。PHP暴露一个Service,向Node提供Session数据
php_session.php?SID=xxxx
function getSessionByID($SID) {
if (session_id()) {
// 关闭当前session
session_destroy();
}
// 初始化指定session
session_id($SID);
session_start();
// 返回操作接口更友好的JSON
// 必要的FLAG看这里 http://www.php.net/manual/en/json.constants.php
return json_encode($_SESSION);
}
header('Content-Type:application/json');
echo getSessionByID($_GET['SID']);
?>
node
var request = require('request');
request('http://localhost/php_session.php?SID=xxxx', function(err, res, body) {
if (!err && res.statusCode == 200) {
// 根据需要使用body(json)
}
});
可以使用第三方的缓存工具,比如 memcached。参考这篇文章:PHP and Node.JS session share using memcache 使用一个第三方存储如redis来保存session。 session还是放在服务器端操作比较好。
可以选择使用cookie,将cookie的生存时间expire设置为0代表随浏览器关闭失效。生存效果和session差不多,前端操作就方便很多了。
note.js运行在服务端的啊?和php并行运行的话可以考虑第三方共享session了,memcache,redis,数据库也可以。 建议是使用redis 或者memcached 做 session,这样不仅node和php程序可以共享session,也不会对php、node程序造成额外的开销。
如果是session放在node或者php程序的内存中,一来需要额外的代码和资源维护,二来这些代码往往不及redis等k-v数据库的解决方案成熟,反而(如果不合理的代码的话)是容易引起bug或者性能瓶颈的地方。比如上面有人提及的暴露php service的方法,或者是暴露node service,不说编写、维护代码需要人力开销,线上每秒请求处理能力一般是 php
至于php, 我没了解过, 如果要支持多机, 水平扩展, 类似redis的方案还是需要的
这种方案缺点就是只能保存通用数据, 不能保存对象引用什么的. 说白了,什么叫共用?就是同一条数据,PHP能读,Node.js也能读。
至于怎么读就得看自己了,放数据库、Memcache、甚至你直接通过PHP留接口给Node.js(就像flamingtop提供的方法)。 session的目的是把数据存在服务器的内存里,如果清楚这点,那么找一个内存数据库(redis,memcached...)就能达到你的目的,如果你嫌这些都还太重量级,就随便用一个你熟悉的语言写一个轻量级的内存数据库就好,跨语言接口或者说是进程间通信推荐使用.sock文件。 推荐redis,php可以直接配置session方案,nodejs也有很多lib 一般的做法是使用session服务器,使用mysql或者memcache等成熟的方案都是可行的。
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
相关文章
相关视频
下一篇: php实例分享之二维数组排序_PHP教程
推荐阅读
-
PHP 与 NodeJS 如何共用 Session?
-
php中session与cookie的比较_php技巧
-
php中session_unset与session_destroy的区别分析
-
想把原来C/S系统转为PHP的B/S结构,问能Web页面与PHP代码分离编程吗?该如何解决
-
php如何保持与C++的socket一直连接?如果检测socket已经连接上?
-
全文索索 - PHP 站内搜索,mysql 是否该加 FULLTEXT ,效率与LIKE相比如何
-
对比分析php中Cookie与Session的异同,对比分析cookie
-
php session对象创建报错,该如何处理
-
PHP会话控制:Session与Cookie详解,sessioncookie_PHP教程
-
大家写login.php一般用cookie还是用session?该如何解决