我使用PHP函数从其他mysql主机获取dome mysql数据,而不是我的web服务器。
功能:
public function theMysqli($build){ // $build is given by othe code (no usedata)
$mysqli = new mysqli($server, $user, $password, $database);
$catid = array( /* +/- 40 id's */ ); //data is $catid = configs::songcats();
$type = array( /* +/- 15 captical letters */ ); //data is $type = configs::songtype();
$limit = 20;
$lstart = $_post['page'];
if($lstart == ''){
$lstart = 0;
}
else{
$lstart = $lstart * $limit;
}
$sletter = $_POST['letter'];
$search = $sletter.'%';
$catquery = "SELECT songid FROM category WHERE catID IN('".implode("', '", $catid)."')";
if ($db = $mysqli->query($catquery)){
while($row = $db->fetch_array()){
$idsong[] = $row;
}
$db->close();
}
foreach($idsong as $gt){
$songid[] = $gt['songid'];
}
// songid is a array over the 30000 values
$countquery = "SELECT id FROM songlist WHERE songtype IN('".implode("', '", $type)."') AND id IN('".implode("', '", $songid)."') AND songname LIKE '".$search."'";
if ($db = $mysqli->query($countquery)){
$countr = $db->num_rows;
$db->close();
}
$pages = ceil($countr / $limit);
$songquery = "SELECT id, songname, artist, copyright, duration FROM songlist WHERE songtype IN('".implode("', '", $type)."') AND id IN('".implode("', '", $songid)."') AND songname LIKE '".$search."' ORDER BY songname ASC LIMIT $lstart, $limit";
if ($db = $mysqli->query($songquery)){
while($row2 = $db->fetch_array()){
$result[] = $row2;
}
$db->close();
}
if($built == 'counter'){
$final == $pages;
}
else if($build == 'gresult'){
$final == $result;
}
return $final;
}
现在我的问题是加载时间,他需要这个脚本,这将是很长。即使我将php.ini设置为执行可能是300秒,他也会在加载页面时卡住。现在我知道你可以通过一个查询从多个mysql表中获取数据,但我找不到任何解决方案来与php内爆函数相结合。
我必须通过$_POST['letter'] M获得的总行数是+/- 1200;(网络电台mp3数据库)
有人能帮我修复这个功能,所以我没有超时了。由于
这里的问题是,您正在从数据库中获取列表,然后将该列表作为查询的一部分发送回来。实际上,您应该在SQL中使用JOIN或嵌套查询来完成大部分工作。这将使您的程序更快。
首先,为所有字段和类型创建一个表。你的catquery应该是:
SELECT songid
FROM category
WHERE catID IN (
SELECT id
FROM catids
)
使用相同类型的模式将查询连接在一起。看起来您可以将这里的大部分代码缩减为一个SQL查询。你将节省大量的时间和内存,因为你不必在你的程序和数据库之间来回发送所有的数据。
给你一些阅读材料:
SQL join: http://beginner-sql-tutorial.com/sql-joins.htm
SQL子查询:http://beginner-sql-tutorial.com/sql-subquery.htm