Php 使用JSON XML还是数据库无法决定
我正在开发一个应用程序,它发送一个id,作为回报,php向客户端发送一个json节点。我的问题是,我应该将数据保存为静态php数组(如底部代码所示),还是将数据保存到外部xml/json文件,还是使用数据库?阵列中最多可能有10000个项目。请建议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"=>
<?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];