Tag: php

Laravel 5:使用Laravel会话数据的Socket.io客户机authentication

我想基于由Laravel创build的客户端会话数据来validationsocket.io客户端。 我想到的是: A – 从客户端发送用户名和电子邮件到服务器; B – 在用户login后,将数据存储在我的socket.io服务器所需的Redis中,然后根据会话Cookie ID在Node.js中读取。 如果我更喜欢这种方法sessionId -> "email, name"我可能必须在Redis中存储sessionId -> "email, name" 。 C – 在Laravel中使用Redis会话驱动程序,解码由Laravel设置的Cookie,从Node.js访问Laravel会话值,对其进行反序列化和解码; 方法A显然非常不安全,只能用来certificate概念。 方法C似乎更好,因为我不必复制或pipe理会话数据,但只能解码它。 然而,这种方式将我的应用程序与Laravelpipe理会话的实现细节结合起来,因此似乎不合适。 方法B看起来更有希望,实现起来更简单。 然而,使用方法B意味着我必须自己pipe理一些会话数据,以便socket.io能够读取它。 这样做可能会使我在Redis中存储的Laravel会话数据和会话数据相互不一致,而这会在某个时间点发生。 在某些极端的情况下,例如一个过期的会话ID可以被重用,并且一些socket.io客户端将被错误地authentication为另一个用户。 我现在不能想到更微不足道的情况,但是由于这种情况,我认为有可能存在这种情况,安全和用户体验都可能受到损害。 在socket.io应用程序中基于Laravel会话数据实现用户身份validation的更优雅,健壮和安全的方法是什么? 如果没有更好的方法,我认为方法B是最好的,我可以做些什么来提高使用Redis和Laravel会话数据pipe理的会话数据之间的一致性。 就我所能概括的而言,实际上访问Laravel和php之外的Laravel会话数据,并通过sessionId,电子邮件和用户名来识别客户端。

PHP发送消息给Node / Socket.IO服务器

我不太确定我是否以正确的方式去解决这个问题。 我想坚持使用我的Socket.IO服务器,不想在节点内创build单独的HTTP服务器。 有了这个,我可以创build一个PHP客户端,可以直接向节点Socket.IO服务器发送数据(例如:玩家从网上商店购买物品)吗? 我已经开始: <?php class communicator { public function connect($address, $port){ $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if($socket){ try { socket_connect($socket, $address, $port); } catch(Exception $e){ throw new Exception($e->getMessage()); } }else{ throw new Exception('Could not create socket.'); } } ?> 套接字似乎连接到节点服务器,但我怎样才能开始直接从PHP客户端接收数据? 例如:说我使用socket_write发送消息到服务器。 我如何通过Socket.IO获取? 希望我的问题是有道理的!

与Laravel Elixir吞噬throws events.js:141未处理的“错误”事件

从昨天起,gulp抛出未处理的错误事件: "C:\Program Files (x86)\JetBrains\PhpStorm 10.0.1\bin\runnerw.exe" "C:\Program >Files\nodejs\node.exe" C:\..\..\..\..\..\node_modules\gulp\bin\gulp.js –color –>gulpfile "d:\..\..\..\gulpfile.js" default [11:41:02] Using gulpfile d:\..\..\..\gulpfile.js [11:41:02] Starting 'default'… [11:41:02] Starting 'sass'… Fetching Sass Source Files… – resources\assets\sass\app.scss Saving To… – public\css\app.css [11:41:02] Finished 'default' after 323 ms events.js:141 throw er; // Unhandled 'error' event ^ Error: no writecb in Transform class at afterTransform (d:\..\..\..\node_modules\gulp-autoprefixer\node_modules\readable->stream\lib\_stream_transform.js:95:33) […]

如何使用node.js获取SSL证书信息?

我已经使用这篇文章的答案构build了这个PHP版本。 现在我的问题是,我想要并行执行多个请求。 我已经使用node.js来做NS服务器的类似请求,所以很自然地想到。 有人可以帮我吗? 作为一种替代scheme,有人可以告诉我是否有一种方法可以使用PHP来并行执行。 谢谢!

自动保存服务器架构

我想在服务器上保存一个冗长的表单input。 但是我不认为每个自动保存动作的db调用是最好的方法。 什么构成了解决这个问题的好方法? 另一个问题是,我有3个应用服务器。 所以在内存caching将无法正常工作。 我想保持在redis中的数据,并在每次调用更新它,最后更新数据库。 但是,因为我有3台服务器,我怎样才能确保呼叫在队列中? 任何人都可以帮助build筑?

使用mysql池对node.js(cluster)的性能进行基准testing:Lighttpd + PHP?

编辑(2):现在使用db-mysql和generic-pool模块。 错误率大幅下降,徘徊在13%,但吞吐量仍然在100瑞士克/秒左右。 编辑(1):有人build议ORDER BY RAND()会导致MySQL变慢,我已经从查询中删除该子句。 Node.js现在徘徊在100 req / sec左右,但服务器仍报告“连接错误:连接太多”。 Node.js或Lighttpd与PHP? 你可能看到了许多“Hello World”的node.js基准testing,但是“hello world”testing,即使是那些每个请求延迟了2秒的testing,甚至都不能接近现实世界的产品使用情况。 我还使用node.js执行了“Hello World”testing的这些变体,并且看到吞吐量约为800 req / sec,错误率为0.01%。 但是,我决定进行一些比较现实的testing。 也许我的testing没有完成,很可能是node.js或我的testing代码真的是错误的,所以如果你是一个node.js专家,请帮我写一些更好的testing。 我的结果发表如下。 我使用Apache JMeter来进行testing。 testing用例和系统规格 testing非常简单。 用户数量的mysql查询是随机排列的。 第一个用户的用户名被检索和显示。 mysql数据库连接是通过一个unix套接字。 操作系统是FreeBSD 8+。 8GB的RAM。 英特尔至强四核2.x Ghz处理器。 我甚至在我遇到node.js之前调整了Lighttpdconfiguration。 Apache JMeter设置 线程数(用户):5000 我相信这是并发连接数 加速期(以秒为单位):1 循环计数:10 这是每个用户的请求数量 Apache JMeter最终结果 标签| #Samples | 平均| Min | 最大| 标准。 开发。 | 错误%| 吞吐量| […]

如何使用Redis在NodeJs和PHP之间共享会话?

我想使用Redis在NodeJs应用程序和PHP应用程序之间共享服务器会话。 我从这个要点拿走了大部分的代码。 NodeJs代码: app.use(session({ store: new RedisStore({prefix: 'session:php:'}), name: 'PHPSESSID', secret: 'node.js' })); app.use(function(req, res, next) { req.session.nodejs = 'node.js!'; res.send(JSON.stringify(req.session, null, ' ') ); }); 它输出: { "cookie": { "originalMaxAge": null, "expires": null, "httpOnly": true, "path": "/" }, "passport": {}, "nodejs": "node.js!" } PHP代码(我使用redis-session-php和Predis ): require('redis-session-php/redis-session.php'); RedisSession::start(); $_SESSION['php'] = 'php'; if (!isset($_SESSION["cookie"])) { $_SESSION["cookie"] […]

如何显示连续的实时更新,如Facebook的股票,meetup.com主页呢?

如何显示连续的实时更新浏览器,如Facebook的股票,meetup.com主页呢? 在python,PHP,node.js和在服务器端的性能影响是什么? 如果页面被像akamai这样的CDNcaching,我们又怎么能实现同样的更新呢?

为单个文件设置语法高亮显示

我经常编写小型的命令行实用程序,并使用其他语言来创build这些脚本(例如node.js,php等)。 当我创build这些文件时,我使用了一个标准的#! 启动文件来向shell表明这个intepreter应该是什么。 例如,对于一个node.js脚本,我把它放在顶部: #!/usr/bin/env node 在PHPStorm / WebStorm中,只要文件扩展名为.js ,语法突出显示就可以正常工作,但是如果删除了扩展名,则没有语法突出显示。 在SublimeText中,我可以使用命令pallet通过键入Ctrl + P / Cmd + P + SSJS(Set Syntax JavaScript)来将当前文件的语法设置为JavaScript(例如) JetBrains IDE中有没有什么办法可以设置单个文件的语法,而不仅仅是基于文件扩展名注册文件types?

在Javascript不匹配的PHP包/解压缩实现

根据这个问题的相关答案 ,我试图把类似这个PHP进程的pack / unpack解决scheme放在一起,但是在使用md5和bufferpack的 Nodejs(Javascript)中 这里是PHP方法(改编自DaloRADIUS : $challenge = 'c731395aca5dcf45446c0ae83db5319e'; $uamsecret = 'secret'; $password = 'password'; $hexchal = pack ("H32", $challenge); $newchal = pack ("H*", md5($hexchal . $uamsecret)); $response = md5("\0" . $password . $newchal); $newpwd = pack("a32", $password); $pappassword = implode ("", unpack("H32", ($newpwd ^ $newchal))); echo "Response: —> ", $response, "\n"; echo "New […]