Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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 使用JSON XML还是数据库无法决定_Php_Javascript_Jquery_Database_Json - Fatal编程技术网

Php 使用JSON XML还是数据库无法决定

Php 使用JSON XML还是数据库无法决定,php,javascript,jquery,database,json,Php,Javascript,Jquery,Database,Json,我正在开发一个应用程序,它发送一个id,作为回报,php向客户端发送一个json节点。我的问题是,我应该将数据保存为静态php数组(如底部代码所示),还是将数据保存到外部xml/json文件,还是使用数据库?阵列中最多可能有10000个项目。请建议 <?php // Fill up array with names $a = array( array("id"=>1001, "name"=>"One", "address"=>

我正在开发一个应用程序,它发送一个id,作为回报,php向客户端发送一个json节点。我的问题是,我应该将数据保存为静态php数组(如底部代码所示),还是将数据保存到外部xml/json文件,还是使用数据库?阵列中最多可能有10000个项目。请建议

<?php
    // Fill up array with names
    $a = array(
                array("id"=>1001, "name"=>"One", "address"=>"", "city"=>"", "state"=>""),
            array("id"=>1002, "name"=>"Two", "address"=>"", "city"=>"", "state"=>""),
            array("id"=>1003, "name"=>"Three", "address"=>"", "city"=>"", "state"=>""),
            array("id"=>1004, "name"=>"Four", "address"=>"", "city"=>"", "state"=>""),
            array("id"=>1005, "name"=>"Five", "address"=>"", "city"=>"", "state"=>""),
            array("id"=>1006, "name"=>"Six", "address"=>"", "city"=>"", "state"=>"")
            );

    //get the q parameter from URL
    $q=$_GET["q"];
    //lookup all hints from array if length of q>0
    if (strlen($q) > 0)
    {
        $hint="";
        $att = "id";
        for($i=0; $i<count($a); $i++)
        {    
           if($q==$a[$i][$att])
           {
              echo json_encode($a[$i]);
           }       
        }
    }
    echo "";
    ?>


我绝对建议使用数据库。也许在开始时,您认为通过文件访问JSON元素更容易,但是如果您有数百条记录,则可能很难处理,尤其是在搜索数据时。如果您对使用JSON感到满意,那么您可以尝试使用JSON-DB环境之类的环境。

如果您将拥有那么多记录,您肯定应该使用数据库。我建议检查SQLite,它是一个非常简单和紧凑的数据库。不确定你们是指智能手机应用,但若你们是指智能手机应用,那个么iOS和Android上都可以使用SQLite。它与从智能手机到网络服务器到台式机的所有设备都兼容——这是一个很好的数据库。关于它也有很多好的文档。它由Mozilla、Adobe和Oracle赞助

数据库可能是性能可以接受的最简单的解决方案

如果您希望每秒处理超过10000个请求,那么传统数据库可能太慢,将数据保留在内存中的过程会更快。PHP在这方面是出了名的不好,事实上它对大多数事情都是不好的,但是运行一个正常的网站。无状态特性可以使调试变得更容易,但是如果您的应用程序主要处理本质上是有状态的事情,那么处理它就是一件痛苦的事情。问问自己,PHP是否适合这项工作,例如Node.js将使在内存中存储列表成为一个直观而简单的解决方案

通常,无论您选择何种存储解决方案,似乎最自然的做法是将数据存储为您想要提供的JSON字符串格式,除非它所基于的数据经常发生更改

您当前的代码有两个主要缺陷:

  • 当PHP进程启动时,它会为每个请求加载整个列表,因为列表是代码形式的。这在大多数其他语言中都不是什么问题,因为您通常不会经常启动新流程。(无论如何,您通常不应该在代码中放入大量数据,但这是因为它往往变得难以维护。)
  • 您可以在整个列表中循环查找请求的项,使用
    id
    作为键,您几乎可以在任何时间内获取正确的记录,如下所示:


在您的情况下,最好使用数据库。此外,为了使您的访问速度更快(如果ID是唯一的)。。有
die(json_编码(…)实际上此数据是本地业务列表。所以它不会经常改变。可能会从每个列表中添加或删除2/3项。这正是我所期望的,生意不会每天开张和结束。我不期望每秒收到10000个请求,但期望本地业务列表大约10000个。我认为与其将搜索请求传递给SQLServer,不如将其保存为php字符串数组。但看起来每个人都建议使用数据库!
$a = array(
    "1001"=>array("id"=>1001, "name"=>"One", "address"=>"", "city"=>"", "state"=>"")
)

//Get the requested record
$a[$q];