Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中创建同步网页,以便数据库更改立即反映在浏览器中?_Php_Mysql - Fatal编程技术网

如何在php中创建同步网页,以便数据库更改立即反映在浏览器中?

如何在php中创建同步网页,以便数据库更改立即反映在浏览器中?,php,mysql,Php,Mysql,如何在php中创建同步网页,以便如果数据库发生更改,它会立即反映给在浏览器中查看该页面的用户。数据库是mysql,我使用的是没有框架的普通php 我有一个数据库表来显示旅游包,包可以与多个人共享,现在如果其中任何一个人更改包中的任何内容,如机票预订,这应该立即反映给查看该包的另一个人。我知道这可以通过node和react来实现,但是通过vanilla js和php可以实现吗?如果是这样的话,如果我遗漏了任何明显的东西,请道歉。您可以使用SSE(服务器发送的事件),例如,这里是如何实现它的 是的,

如何在php中创建同步网页,以便如果数据库发生更改,它会立即反映给在浏览器中查看该页面的用户。数据库是mysql,我使用的是没有框架的普通php

我有一个数据库表来显示旅游包,包可以与多个人共享,现在如果其中任何一个人更改包中的任何内容,如机票预订,这应该立即反映给查看该包的另一个人。我知道这可以通过node和react来实现,但是通过vanilla js和php可以实现吗?如果是这样的话,如果我遗漏了任何明显的东西,请道歉。

您可以使用SSE(服务器发送的事件),例如,这里是如何实现它的


是的,您可以通过AJAX调用使用香草Javascript实现这一点。我会使用jQuery,但您也可以使用香草Javascript,只需研究这些AJAX函数即可

在Javascript中需要3个函数:

  • 包更改时向服务器发送更新(PHP>DB)
  • 从服务器获取包的更新(这将是一个轮询函数,您可以每隔x秒调用该函数来检查包的更新。我建议在服务器回显输出之前使用
    json\u encode()
    ,以便您可以在Javascript端轻松地用
    $.parseJSON
    进行解析
  • 使用来自#2的更新,通过Javascript/jQuery重新呈现页面上的数据(有助于使用特定ID和类,以便轻松更改数据)

  • 如果我这样做的话,我希望使用WebSocket,在WebSocket中,PHP/服务器端向前端(所有客户端)发送一个通知,告知它/它们需要更新其数据。(我假设有一些PHP代码负责更新数据库。)不过,可能有更好的方法可以做到这一点。是的,如果您可以将浏览器与标识符唯一关联,例如让您的用户登录并使用他们的用户ID,则可以针对特定用户。例如,当包更改时发送此信息:
    {“uid”:9000,“uName”:“agiHammerTheep”,“cmd”:“updateData”,“data”:“bookingUpdated”,pid:125}
    /*通知Agi HammerTheep预订信息已更改;任何不是Agi HammerTheep的客户都将忽略此消息*/您可以使用“长拉”或“每隔30秒拉一次”,但更优雅的方法是使用socket.io传播事件。我建议您看看这两本书,了解一些想法:如果您想走这条路,请参阅。(我并不是说你应该放弃PHP,转而使用Node,[尽管这可能是更容易的途径],而是Node可能会给你一些PHP代码的想法。)“我使用的是没有框架的普通PHP。”这不是你想要做的事情。框架是PHP实用性和功能的基础。如果没有一大堆的工作,核心语言不可能做你想做的事情,我指的是多年的开发人员承诺。不要认为你忽视这些有价值的社区项目是在为自己服务RSSILE,“SSE在一些新的、更性感的通信协议,如WebSoSAPI”中占据了次要地位,所以我应该考虑使用WebSoCube,或者SSE更适合我的目的,谢谢……这是在这里打开的。