实时比分表最佳做法 - php

我将制作一个实时评分表,该表显示数据库中的分数
显然,我将使用jquery ajax进行此操作,但我想知道这样做的最佳做法是什么。

选项1:在我的JavaScript中建立表格

返回具有所有分数的数组或对象并使用javascript或jquery来构建表是一个好主意吗?这意味着我遍历结果并在需要的地方创建tr或td。

选项2:退货表

还是我应该在php中建立表格,然后在网页上吐出全部内容。我认为这里唯一的问题是,如果我可能想为要删除的行设置动画,则您无法真正控制内容。

我对此感到困惑。理想情况下,我希望能够使分数变化,将行动画化为淡入淡出的效果,并且新分数就位。

这就是为什么我要问一些关于如何实现这一目标的见解和意见。

谢谢!

参考方案

我认为AJAX最好只读取JSON,而不要读取其他任何内容。这样,您可以使其成为REST API的一部分。然后让您的脚本使用DOM操作呈现表。无论如何,这就是Angular和Backbone这样的现代框架所做的。

现在,介绍如何完成数据检索。

基于Cron的方法

在这种情况下,我通常要做的是创建一个仅负责更新数据的脚本。例如:

<?php
$data = ...
file_put_contents(__DIR__ . '/data/scores.json', json_encode($data));

然后,我将此脚本添加到cron中,以使其在所需的间隔内执行。

* * * * * php myscript.php

最后,JS脚本仅检索/data/scores.json文件,而完全不涉及服务器端代码。

在您的情况下,您希望经常运行脚本(每5秒一次)。 Cron最多可以每分钟运行一次任务,但是,you can use some workarounds使其可以更频繁地执行脚本。

现在让我们讨论这种方法的一些缺点。

首先,存在如此频繁地产生新流程的问题。通常,产生一个新进程的成本很高,因此每隔几秒钟初始化一个完整的PHP解释器对我来说并不是一个好主意。
其次,存在I / O操作性能的问题。由于我们使用HDD作为缓存,因此脚本的运行速度仅与HDD保持同步保持同步一样快。

这将我们引向另一种方法,该方法已在评论中进行了讨论。

运行时方法

您可以执行以下操作的AJAX查询scores.php

<?php
if (isCacheValid())
{
    $data = readCache();
}
else
{
    $data = ...
    saveCache($data);
}
echo json_encode($data);

这种方法的优点是:

您不会每隔几秒钟就产生一次PHP解释器,因为它包含在Apache的/ nginx / fastcgi的内存中,可以即时处理脚本。
该脚本与您选择的缓存方法一样快。由于HDD速度较慢,因此memcached实际上是个好主意,因为它会将信息存储在RAM中,而信息存储速度很快。

SQL性能问题

每隔几秒钟查询一次数据库是数据库正常的正常状态,因此您不必担心...除非查询表包含成千上万的行。

最后的笔记

Don't optimize early。测量然后确定解决方案是否令人满意,或者需要解决。

jQuery Ajax和php类 - php

我正在尝试学习如何在php中使用oop。我对jQuery也很陌生。是否可以向php类方法发出Ajax请求?我只将Ajax请求发送到专门用于此目的的文件,并且返回我需要的数据。 参考方案 简短答案:不可以。长答案:Ajax只是一个使用JavaScript从浏览器发出HTTP请求而无需离开页面的术语。您唯一可以“呼叫”的是URL。您可以编写PHP以根据URL来执…

AJAX实时电子邮件验证(PHP) - php

当用户在我的网站上创建帐户时,我希望对照我的数据库(MySQL)中的所有当前用户名检查输入的用户名,并确认是否可用。有谁知道我可以使用的任何好的库,或者是jQuery的插件? 参考方案 所需的确切信息以示例形式here给出。它使用jQuery作为JavaScript库

jQuery-找不到Ajax网址 - php

好的,我敢肯定这确实很容易,而且我很愚蠢,但是似乎并不能深入了解它。我试图从我的js文件“ custom.js”中对“ helpers.php”中的某些代码进行简单的AJAX调用。但是,我仍然收到404错误,因为我似乎并没有正确遍历文件夹,尽管我确信我正在...我的文件夹结构如下:html index.php js/ custom.js includes h…

jQuery ajax()返回json对象,但未正确警告 - php

为什么无法使用data [0] .id返回ID? $(document).ready(function(){ $.ajax({ type: 'POST', dataType: "json", url: '<?php echo matry::base_to('tests/map_it'…

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数