使用 Node.js/socket.io 和 php/mysql 的 Web 应用程序
Posted
技术标签:
【中文标题】使用 Node.js/socket.io 和 php/mysql 的 Web 应用程序【英文标题】:Web application using Node.js/socket.io and php/mysql 【发布时间】:2017-01-25 11:51:00 【问题描述】:我对 node.js 和 socket.io 比较陌生。目前我有一个完成了一半的私人网络项目,它只在服务器端使用 php 和 mysql 数据库运行。我决定使用 socket.io 将它提升到更高级的水平,以实现项目中的几个功能。
所以我阅读了很多关于它的内容并观看了一大堆教程。我还在研究期间发现了this 和this。
我的问题是,这是否仍然是开发 Web 应用程序的常用方法?
更准确地说:在一个事件(如表单提交)上同时使用 AJAX 请求和 socket.emit,对于这些事件是必要的/想要的。
这个想法的背景如下。我现在有一大堆计算在 PHP 中运行。 node.js 服务器在 javascript 中逻辑运行。因此,我可以轻松实现 node.js 服务器,而无需更改 AJAX 请求上的任何内容。或者将我目前拥有的所有内容重写为 js 并仅使用 node.js 服务器。
但这又引出了 3 个问题:
-
在服务器端运行可能更快。使用 PHP 或 JavaScript 编写脚本的计算?
如何在使用 MySQL 的同时在 node.js 服务器上使用事务?
将 PHP 数组转换为 JSON 对象的影响有多大,而仅使用不需要转换任何内容的 node.js 服务器可以避免这种情况。
【问题讨论】:
【参考方案1】:-
JavaScript 在客户端执行,因此您受到用户硬件的限制,而 PHP 在您的服务器上执行。有关性能比较的更多信息,请参阅this post。
我强烈建议您看看这个pure node.js client,它将完美地完成您的工作。
PHP 有许多函数可用于 JSON 数据 (
json_decode(), json_encode(), ...
),但 Node.js 不需要转换 JSON 数据。最后,这实际上取决于您的使用情况以及您计划如何存储和使用这些数据
【讨论】:
感谢您的回复! 1.但是node.js在服务器上运行对吗?因此,您可以使用从数据库中获取的一些数据进行计算,然后将其发送给客户端。 2. 谢谢!没发现。 3. 我已经用过了,谢谢。问题更多,如果 php 和 json_encode() 的组合作为服务器端的 javascript 计算慢一点。 在 node.js 的特殊情况下是的,你是完全正确的。 JavaScript 计算也应该更快,但同样,这完全取决于您的使用情况。以上是关于使用 Node.js/socket.io 和 php/mysql 的 Web 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
在 Heroku 上使用集群和 socket.io-redis 扩展 node.js socket.io@1.*.*
Node.JS、Socket.IO 和集群中的 WebSocket 握手不起作用
STOMP 上的重复事件 Socket.io 和 Node.js