【问题标题】:Is there a way to modify node.js code via a PHP page?有没有办法通过 PHP 页面修改 node.js 代码?
【发布时间】:2016-11-22 12:09:41
【问题描述】:

所以我将 http://socket.io 与 node.js 一起使用并开发聊天以了解有关 node.js 的更多信息

当用户打开页面时,我使用 node.js 与 MySQL 进行通信。

但由于带宽原因,我不能继续使用 MySQL 来处理所有问题,所以我在其中存储了一些变量。例如,我不希望用户登录两次,因此我会将所有用户的套接字 ID 存储在 JSON 中。如果该用户的套接字 ID 已经存在(在 node.js 中),那么我将断开套接字。

这很好用,但是假设我想断开用户的连接,我将如何使用 PHP 来做呢?

我考虑过的一个选项可能是我用所需的更改更新数据库中的表,然后 node.js 每 60 秒检查一次该表并执行它需要做的事情,然后在更改完成后更新表.

这是最好的选择还是我应该尝试使用 PHP 来完成?显然 PHP 会更直接——但这对我来说并不太担心。

【问题讨论】:

    标签: php mysql node.js


    【解决方案1】:

    很简单:

    1. 确保您的 node.js 代码支持 HTTP 请求,而不仅仅是套接字。

    2. 添加路由以执行任何操作。例如,您可以处理 /api/disconnect/:userId,它可以满足您的任何需求。

    3. 在您的 PHP 代码中,使用 file_get_contents 或 cURL 系列调用调用相关 URL。

    当然,你要确保你有一些不错的安全性,这样只有你的 PHP 脚本才能调用你的 web 服务,否则你就会为各种攻击打开大门。在短期内,这可以通过只收听127.0.0.1 并使用该地址进行通信来完成。

    请注意,您的问题的标题实际上与其文本不匹配。您实际上并没有修改 node.js 代码,您只是在修改它所操作的数据。

    【讨论】:

    • 谢谢!这听起来是个好方法。抱歉标题不好。
    【解决方案2】:

    不确定我是否按照您的描述进行操作,但值得注意的一件事是您正在考虑使用代码修改代码。不。自我修改代码(不管它是否拆分为系统的不同组件)是一个非常糟糕的主意。

    如果该用户的套接字 ID 已经存在,那么我将断开该套接字。

    存在于哪里?大概在 node.js 中。

    虽然您可以使用数据库来持久化数据,但我会尝试将数据从 PHP 脚本直接注入 node.js。这消除了轮询步骤。关于如何在重启后将信息重新填充到 node.js 中存在一个问题,但这取决于您提供的信息要多得多。

    【讨论】:

    • 对不起,我更新它更清楚一点。套接字 ID 将在 node.js 中存储在每个用户的 JSON 变量中。重新填充信息并不是真正的问题,当每个用户连接时,它会检查数据库并将相关信息添加到我设置的 JSON 变量中。
    • “自我修改代码(不管它是否拆分为系统的不同组件)是一个非常糟糕的主意。”我赞同这种观点。
    猜你喜欢
    • 2023-02-21
    • 2019-01-23
    • 1970-01-01
    • 2012-12-04
    • 2020-01-12
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    相关资源
    最近更新 更多