php - 如何避免 PHP 中的一些 SQL 查询?

标签 php mysql

我正在使用 jQuery 和 Twitter Bootstrap 开发 PHP Web 应用程序。它使用 AJAX 来处理所有事情。因此,我在 HTML5 中显示一个表单,用户按下一个按钮(class="btn"),该表单被发送到 PHP(jQuery、AJAX),PHP 向 MySQL 发出查询并回显一个答案,如下所示表单(jQuery)。这基本上就是网络应用程序的工作原理。

但事情是这样的,它显示的第一个表单,是一个显示一些新闻的 div。例如:

 A new user was created.
 There is new important date.
 Someone wants to text you.

因此,我在 MySQL 中创建了一个名为 News 的表,其中保存了一些值,其含义如下:

 1: A new user was created
 ...

每次用户登录时都会看到这一点。这意味着当用户登录时,HTML5 加载后就会有查询和响应。

index.html 文件有一个导航栏(Bootstrap)和一个调用新闻的选项。当用户单击它时,将执行相同的查询,但不一定是相同的响应。

我想在用户执行某个操作时用新闻修改 div。但是,另一个用户也可以执行某个操作。所以需要再次查询!

是否有任何解决方案可以让我在用户想要获取新闻时避免查询数据库?或者我怎么知道现在有必要更新div?我正在研究缓存查询,但没有得出结论。

抱歉,如果我的英语不太好,那不是我的母语。

谢谢。

最佳答案

您可以在服务器的每个新闻响应中发送时间戳并将其保存在 JavaScript 中。下次发出请求时,发送您保存的时间戳,服务器检查是否有更新的新闻,如果没有,则不发送任何内容,因为最后的响应仍然是最新的。

好吧,这里有一个缺点,您仍然需要对数据库进行查询(使用像“WHERE ... TIMESTAMP > last_timestamp_from_browser”这样的 WHERE 子句过滤结果),这是完全有效的,SGBD 就是为此设计的,如果您没有数千个用户同时访问您的网站,就不会有任何问题。使用这种方法,您只会节省带宽,因为与数据库的连接仍然存在。

还有另一种方法可以阻止建立此连接,缓存最后插入的新闻的一些值(可以是用户特定的或全局的)并将它们保存在 APC 模块(或 memcached)中。您需要发现要缓存的内容以及何时缓存(例如,您无法缓存整个数据库,只能缓存一些组织良好的时间戳,也许还有请求最多的新闻)。这样就可以防止建立数据库连接。这将迫使您执行更多代码,因此,仅在您确实需要时才使用它,例如同时处理数千个用户连接。

关于php - 如何避免 PHP 中的一些 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19061965/

相关文章:

mysql - 导入数据库只检索 50 个表

java - 从 PHP 调用 jar

php - 使用 wordpress woocommerce 创建自定义 'Add to cart'

javascript - 一种检测隐身浏览的方法?

php - 获取每行的最后成本

php - MySQL 递归获取正确的节点 PHP

php - 我可以从 js 刷新 Yii CGridView 吗?

php - Laravel 排名字段如何在 MySQL 中使用设置变量?

php - 在 phpMyAdmin 中插入失败,但在直接使用 MySQL 时有效

javascript - 显示从融合表到谷歌网站的特定名片