Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.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包含或MySQL获取_Php_Mysql - Fatal编程技术网

PHP包含或MySQL获取

PHP包含或MySQL获取,php,mysql,Php,Mysql,我有一个基本的学习网站,在导航栏上有一个类别列表(以树的形式,像主要类别及其子类别一样),大约有30多个类别,可能会增加,但不会增加很多 在每个页面上,我从数据库中检索它们,然后使用PHP进行类似于树的计算,将它们排序到树中(父级,然后是子级) 我觉得没有必要每次都这么做,所以我想缓存它。但它只有30个或最多100个类别,所以值得缓存它们吗 所以我想知道以下哪种方法更快: 从MySQL获取它们,然后用PHP进行计算 每次删除、添加或更新类别时,执行步骤(1)一次,并将结果存储在HTML文件中。然

我有一个基本的学习网站,在导航栏上有一个类别列表(以树的形式,像主要类别及其子类别一样),大约有30多个类别,可能会增加,但不会增加很多

在每个页面上,我从数据库中检索它们,然后使用PHP进行类似于树的计算,将它们排序到树中(父级,然后是子级)

我觉得没有必要每次都这么做,所以我想缓存它。但它只有30个或最多100个类别,所以值得缓存它们吗

所以我想知道以下哪种方法更快:
  • 从MySQL获取它们,然后用PHP进行计算
  • 每次删除、添加或更新类别时,执行步骤(1)一次,并将结果存储在HTML文件中。然后每隔一次加载页面时,应用程序将检查并包含文件(如果存在),或者再次执行步骤(1)

  • 注意:每次删除、添加或更新类别时,缓存文件都会被删除。

    尝试编写两个独立的PHP程序(即可以通过在命令行上运行
    $PHP script\u name.PHP
    来执行的程序),分别执行这些方法之一。然后,您可以使用
    time
    实用程序(假设您在macOS或Linux上编程),如下所示:

    查看执行脚本需要多长时间

    诚然,这是一种相当粗糙的基准测试方法。如果你是认真的,看看。这看起来是您可能需要的。

    为什么要使用文件?
    在这种情况下,服务器端缓存通常是更好的解决方案。但您也可以使用javascript在浏览器中使用本地存储在客户端上缓存它。因此,您可以直接从本地存储器中检索菜单

    你可以用
    要在客户端存储数据

    只有100%的故障安全知道方法是。。。。。。。你可以用memcache(d)来做基准测试。“但它只相当于30个或最多100个类别,所以值得缓存它们吗?”这些数字在这里毫无意义,实际上,这取决于平均需要多长时间,数据可以更改的频率等。缓存只有在一定时间内保持不变才是好的,这使得每次查询都值得。类别不会经常更改,可能每月或每年更改一次,也可能永远不会更改,但我仍然想知道哪种方法更好,因为我想将它们用于更复杂和更大的数据。请记住,对于某些理论上更快的方法,可能会有很大的固定成本。也就是说,数据集越小,速度越快,可能无法很好地扩展。(例如,极端情况:对一组3个元素进行快速排序与选择排序)了解在任何给定情况下什么是最好的最好方法是使用与实际数据顺序相同的数据集进行测试。很高兴为您提供帮助:-)
    $ time php script_name.php