我正在为Android应用程序和网站使用一个数据库。所以管理员可以通过一个管理面板同时更新网站和Android应用程序。对于Android应用程序,数据库通过API连接。问题是只有当我删除与应用程序无关的表时,android应用程序才能顺利运行。数据库包含15个表。其中3个表共同用于Android应用程序和网站。如果我删除除了这3个表之外的其余表,android应用程序运行顺利。但是,如果我不放弃其他表,Android应用程序几乎不会获取数据。同时,如果我运行网站(加载应用程序时)网站无法加载。
This site can’t be reached
........took too long to respond.
ERR_CONNECTION_TIMED_OUT
我认为以下代码存在问题。
api.php
$con = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8;","$dbuser","$dbpass");
if(isset($_GET['cat_id'])){
$result=$con->prepare("SELECT * FROM tbl_news_category c,tbl_news n WHERE c.cid=n.cat_id and c.cid='".$_GET['cat_id']."' ORDER BY n.nid DESC");
}
else if(isset($_GET['latest_news'])){
$limit=$_GET['latest_news'];
$result=$con->prepare("SELECT * FROM tbl_news_category c,tbl_news n WHERE c.cid=n.cat_id ORDER BY n.nid DESC LIMIT $limit");
}
else if(isset($_GET['apps_details'])){
$result=$con->prepare("SELECT * FROM tbl_settings WHERE id='1'");
}
else{
$result=$con->prepare("SELECT * FROM tbl_news_category ORDER BY cid DESC");
}
$set = array();
$result->execute();
$total_records = $result->rowCount();
if($total_records >= 1){
while($link=$result->fetch(PDO::FETCH_ASSOC)){
$set['NewsApp'][] = $link;
}
}
echo $val= str_replace('\\/', '/', json_encode($set));
?>
强行终止Android应用程序后,网站运行顺畅。首先,我认为这是缓存/连接不良问题。我改变了互联网连接,清除了缓存,使用了其他设备,PC,浏览器。但问题无法解决。如果我使用两个数据库,它工作正常。我不想在两个数据库中存储相同的内容。实际上是什么导致了问题,托管服务器或代码?
答案 0 :(得分:1)
您的代码看起来有问题。来自Android应用的查询会锁定表格,您的网站无法在这些表格中执行查询。在Android应用中为您的查询设置合理的超时,然后检查慢查询日志以查看哪个查询挂起或在Android应用运行查询时运行查询SHOW FULL PROCESSLIST;
以查看有问题的查询。