Сокращение запросов и оптимизация динамических звонков

Я размещен на сайте one.com, и недавно у меня возникла проблема, когда пользователи были заблокированы с моего сайта из-за слишком большого количества запросов с одного и того же IP-адреса. Я думаю, что причина в неуклюжем программировании с моей стороны (при вызове базы данных). У меня есть динамический вызов нескольких соединений в цикле do-while, как показано:

if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}$unit_nr_var = $unit_nr_var1.'.';
$rs_nr = 1;
$te_unit_id_var = $unit_nr_var.$rs_nr;

mysql_select_db($database_db_stat, $db_stat);
$query_rs_theory = sprintf("SELECT * FROM tbl_exercise_theory WHERE tet_exercise_id = %s", GetSQLValueString($unit_nr_var1, "text"));
$rs_theory = mysql_query($query_rs_theory, $db_stat) or die(mysql_error());
$row_rs_theory = mysql_fetch_assoc($rs_theory);
$totalRows_rs_theory = mysql_num_rows($rs_theory);

for($i = 0; $i <= 9; $i++) {

$_cook_id = $_COOKIE['MM_cookieUserID'];

mysql_select_db($database_db_stat, $db_stat);
$query_rs_unit_[$i] = sprintf("SELECT te.*, tp.tp_answer FROM tbl_exercise te LEFT OUTER JOIN tbl_progression tp ON (tp.tp_user_id = %s AND tp.tp_exe_id = te.te_id) WHERE te_unit_id = %s ORDER BY te_id ASC", GetSQLValueString($_cook_id, "text"),     GetSQLValueString($te_unit_id_var, "text"));
$rs_unit_[$i] = mysql_query($query_rs_unit_[$i], $db_stat) or die(mysql_error());
$row_rs_unit_[$i] = mysql_fetch_assoc($rs_unit_[$i]);
$totalRows_rs_unit_[$i] = mysql_num_rows($rs_unit_[$i]);

mysql_select_db($database_db_stat, $db_stat);
$query_rs_name_[$i] = sprintf("SELECT * FROM tbl_exercise_name WHERE ten_exercise_id = %s", GetSQLValueString($te_unit_id_var, "text"));
$rs_name_[$i] = mysql_query($query_rs_name_[$i], $db_stat) or die(mysql_error());
$row_rs_name_[$i] = mysql_fetch_assoc($rs_name_[$i]);
$totalRows_rs_name_[$i] = mysql_num_rows($rs_name_[$i]);

mysql_select_db($database_db_stat, $db_stat);
$query_Recordset[$i] = sprintf("SELECT * FROM tbl_exercise WHERE te_unit_id = %s ORDER BY     te_id ASC", GetSQLValueString($te_unit_id_var, "text"));
$Recordset[$i] = mysql_query($query_Recordset[$i], $db_stat) or die(mysql_error());
$row_Recordset[$i] = mysql_fetch_assoc($Recordset[$i]);
$totalRows_Recordset[$i] = mysql_num_rows($Recordset[$i]);

$rs_nr = $rs_nr + 1;
$te_unit_id_var = $unit_nr_var.$rs_nr;if (($totalRows_Recordset[$i] <= 0))
{
$i = 10;
}

}

Я знаю, что это не может быть эффективным способом получения переменного числа таблиц, в зависимости от переменной страницы. Тогда возникает вопрос: как мне оптимизировать это?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]