Tag: php

关于将nodejs与php应用程序集成的build议

我有一个现成的PHP应用程序(使用Kohana框架),我想长时间轮询。 从我读的一些东西看来,使用PHP进行长时间轮询并不可取,使用类似nodejs的东西是一个更好的select。 我的问题是什么是将nodejs(或其他适合长时间轮询的工具)与现有应用程序集成的最佳方式? 澄清我的应用程序基本上是一个浏览器插件,您可以用来发送数据给其他人的团体。 当数据发送时,我希望收件人,如果他们在线,也有浏览器插件,立即接收这些数据,并得到通知。

无法使用Git部署到AWS Elastic Beanstalk

我正在关注Elastic Beanstalk文档( http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs_express.html ),但是我无法部署node.js或PHP应用程序饭桶。 $ eb push Error: Failed to create the AWS Elastic Beanstalk application version Cannot run aws.push for local repository HEAD: 如果我尝试从git中推送,也会发生同样的情况 $ git aws.push Updating the AWS Elastic Beanstalk environment phpapp-env… Error: Failed to create the AWS Elastic Beanstalk application version 当您调用eb init时,AWS工具会设置一些git快捷方式。 正在失败的电话是… $.git/AWSDevTools/aws.elasticbeanstalk.createapplicationversion Error: Failed to create the AWS […]

Nodejs – .node_libraries / www数据

我想从我的PHP应用程序中使用uglifyjs(https://github.com/mishoo/UglifyJS)。 UglifyJS是使用Nodejs构build的,所以我需要在我的homedir(/ home / peppe)中有一个.node_libraries / dir。 我想通过PHP中的shell_exec()来执行uglifyjs。 但是我应该在哪里添加.node_libraries / dir,因为www-data用户没有主目录? 另外:我解决了它。 解决的办法是设置NODE_PATH并在PHP中执行如下命令: shell_exec('NODE_PATH="/opt/www_node_libraries/"; export NODE_PATH; uglifyjs options filename');

使用Redis在PHP和socket.io/node.js之间进行通信

我有一个在Apache上构build并运行的PHP应用程序,使用Nginx作为反向代理来提供静态资源。 我还安装了Redis,用于存储每个用户活动stream的活动ID。 活动被写入MySQL数据库,然后Redis将活动ID推送到每个用户stream中。 当用户收到他/她的活动stream时,应用程序首先从Redis中检索活动标识的用户列表,然后通过MySQL IN()查询获取实际的活动数据。 这一切工作得很好,但是我想开始添加实时能力到这个设置。 我希望能够将这些事件直接推送到用户浏览器,并添加一般的实时通知。 为此,我使用socket.io安装了node.js。 我的socket.io服务器正常运行,客户端在页面加载时自动连接。 我在挣扎的地方是在理解如何从我的PHP应用程序发布消息到socket.io。 由于PHP和node.js不能直接通信,因此我的理解是,由于我已经安装并运行了Redis,所以我最好使用Redis作为中介。 但是我不知道如何去做这件事。 我需要的是一个从PHP发送通知到Redis然后到socket.io的过程的描述(任何代码示例都是非常有用的),以便将它推送到相关客户端。 此外,我不明白如何socket.io会知道发送到哪个客户端。 我将如何传递这些信息并保持一切同步? 这甚至是必要的吗? 我是否需要将我的PHP会话存储在Redis中,并且在用户连接时让socket.io收集数据? 还是有另一种方式? 提前致谢。 请注意:我的PHP SESSION数据当前保存到磁盘。

通过http实时监控/控制服务器的正确方法

在我的客户端(带有浏览器的手机)上,我想查看服务器CPU,RAM和HDD的统计信息,并从各种日志中收集信息。 我正在使用Ajax轮询。 在客户端每5秒(setInterval)我调用一个PHP文件: 扫描包含N个日志的文件夹 阅读每个日志的最后一行 将其转换为JSON 问题: 每5秒打开一次新的连接。 多个AJAX调用。 请求头( 它们也是数据,因此消耗带宽 ) 响应标题(^) 使用PHP每5秒读取一次文件。 即使没有改变。 最后的JSON数据less于5 KB,但是我每5秒发送一次,每次都有标题和新的连接,所以基本上每5秒我就要发送5-10 KB得到5 KB, 10-20 KB。 那些是60 sec / 5 sec = 12每分钟60 sec / 5 sec = 12新的连接和每小时约15 MB的stream量,如果我离开应用程序打开。 可以说,我有100个用户,我让监视器/控制我的服务器,将在一个小时左右1.5GB的传出stream量。 更不用说PHP服务器每5秒读取多个文件100次。 我需要在服务器上每5秒读取一次这些日志的最后一行,也许把它们写入一个文件,然后我想把这些数据推送到客户端,只要它改变了。 SSE(服务器发送事件)与PHP header('Content-Type: text/event-stream'); header('Cache-Control: no-cache'); while(true){ echo "id: ".time()."\ndata: ".ReadTheLogs()."\n\n"; ob_flush(); flush(); sleep(1); } 在这种情况下,与第一个用户build立连接后,连接保持打开(PHP不是为此而build立的),所以我节省了一些空间(请求头,响应头)。 这个工作在我的服务器上大多数服务器不允许长时间保持连接打开。 也有多个用户多次读取日志(减慢我的旧服务器)我无法控制服务器…我需要使用ajax发送命令… […]

Node.js聊天 – 用户authentication

我最近build立了一个nodejs聊天服务器,聊天客户端由php服务器提供服务。 当用户login时,他们的会话将被存储在php服务器的mysql中,并且一个logincookie将被附加到浏览器。 我想限制只有login用户才能聊天的用户。 实践这个最好的做法是什么? 我很快就想到: 当聊天客户端加载时,如果用户login,我会通过套接字发送logincookie信息到nodejs verver。 然后创build一个nodejs会话。 用户聊天时,消息连同cookie信息将通过套接字发送到nodejs服务器。 如果cookie信息与nodejs会话不匹配,消息将不会被广播,客户端套接字将被丢弃。

Yeoman和PHP文件?

有没有什么办法可以configurationYeoman(最新版本:v0.9.6)来提供php文件? 我发现这个http://fgnass.github.com/2012/08/30/yeoman.html,但不能得到它的工作。 安装https://github.com/fgnass/gateway,https://github.com/fgnass/tamper ,并按照以下所示向Yeoman进行必要的更新: https : //github.com/fgnass/yeoman/commit/39faa07375ee49d56bd50d334dcfd6b5a4e96292 。 我得到的是浏览器下载每个PHP文件,而不是呈现它。 任何帮助是极大的赞赏! 编辑: Yeoman 1.0已经发布。 我还没有尝试过使用PHP,但仍然想知道是否有可能。

如何在我的网站服务器而不是我的电脑本地服务器运行node.js

最近两天我花了更多的时间,阅读了超过50篇文章和video,以了解node.js,现在我可以通过http//:localhost:3000/在浏览器中看到结果。但是我在下面描述的很多情况下。 我在我的分享托pipe服务器上完成了我的所有工作,我在那里保存我的网站: www.myweb.com 在关于node.js的每一篇文章中,他们都在教导如何通过http//:localhost:3000/在本地pc服务器中通过浏览器下面的代码得到结果。 test.js var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello World\n'); }).listen(3000); console.log('Server running at http://localhost:3000/'); 但是我的问题: 如果我在浏览器中使用http //:www.myweb.com / test.js`,上面的代码是什么? 在本地电脑的情况下,我们写在npm node test.js ,但在托pipe服务器的情况下,当任何clint打开页面如http//:www.myweb.com/test.js //:w​​ww.myweb.com/test.js如何工作? 在PHP的情况下,我们使用包括(“head.php”)从该页面获取的东西但在这种情况下如何打电话node.js。

使用PHP hash()和NodeJS crypto.createHash()比较SHA256,

我正在使用NodeJS为我的网站做一个实时应用程序,允许我的用户使用他们的账户login等等。 但是,我在logging部分问题。 当我在主站点上注册/login用户时,我使用PHP的hash()函数散列密码,如下所示: $passwordSalt = mcrypt_create_iv(100); $hashed = hash("sha256", $password.$passwordSalt.$serverSalt); 而且在我的网站上效果很好 但是我需要能够从NodeJS的数据库中获取用户的salt,并且能够散列用户input的密码,并根据数据库的密码进行检查,并确保它们匹配以便将用户login。 我是这样做的: //Check if Username exists, then grab the password salt and password //Hash the inputted password with the salt in the database for that user //and the salt I used for $serverSalt in PHP when creating passwords //check if hashed result in NodeJS […]

Codeigniter在nodejs中读取会话cookie

我正在做一个codeigniter的应用程序,并为实时的东西实现nodejs。 我想检查用户是否使用nodejslogin。 通过下面的代码,我可以在nodejs服务器中获得codeigniter会话ID: var server = require('https').createServer(options, function(request, response){ var cookies=(function(str){ var result={}; str.split(/;\s+/).forEach(function(e){ var parts=e.split(/=/,2); result[parts[0]]=parts[1]||''; }); return result; })(request.headers.cookie), sessionCookieName='ci_session', sessionId=cookies[sessionCookieName]||''; console.log(sessionId); }).listen(8080); codeigniter会话存储在数据库中,encryption设置为true。 而sess_match_ip = TRUE,sess_match_useragent = TRUE; 现在我的问题是,什么是检查用户是否login的好方法? 我已经安装了node-mysql客户端。 我知道CI做的是这样的: SELECT * FROM (`ci_sessions`) WHERE `session_id` = 'blabla' AND `ip_address` = '127.0.0.1' AND `user_agent` = 'Mozilla/5.0 (Macintosh; Intel Mac OS X […]