У меня проблема с базой данных, когда она огромная. Я опишу: это очень просто - создано сторонним приложением и имеет только поля в одной таблице: «страница» и «данные» - о странице (URL) и данных.
Таким образом, он отлично работает при низком количестве страниц ~ 5000, но он работает с ошибками на страницах по 100 КБ. Когда я открываю индексную страницу на сайте или на 2-й, 3-й страницах - она открывается правильно, но если я открою страницу 55321 - у меня ошибка 404.
Мой конфиг быстр для 100кб страниц db: vps с ssd atv nginx + php + fpm. Память в порядке, процессор в порядке.
1. Может быть, это индексы после импорта, и я должен ждать этого?
2. Или, может быть, мне придется создавать индексы вручную? Может ли кто-нибудь помочь с командой.
3. Мой БД начинается с этого:
CREATE TABLE `domain_com` (
`page` varchar(200) NOT NULL,
`data` text,
PRIMARY KEY (`page`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Может быть, для улучшения индексации нужно переключиться на MYISAM Engine?
==== Добавлен код со страницы примера (в моем случае product.php) ====
<?
$n = $_GET["n"];
if (isset($_GET["ctgfolder"])) {
$ctgfolder = $_GET["ctgfolder"];
} else {
$ctgfolder = '';
}
if (strlen($ctgfolder) > 0) {
$fn = "$ctgfolder/product-$n.txt";
} else {
$fn = "product-$n.txt";
}
if (file_exists($fn) == true) {
$file = fopen($fn, 'r');
$tx = fread($file, filesize($fn));
fclose($file);
} else {
if (file_exists("dbinfo.php") == true) {
include "dbinfo.php";
$site_encoding = 'utf8';
$msconnect = mysql_connect($mshost, $msuser, $mspassword);
mysql_select_db($msname, $msconnect);
mysql_query("SET NAMES 'utf8'");
if ($site_encoding != 'utf8') {
mysql_query("SET character_set_client = $site_encoding");
mysql_query("SET character_set_connection = $site_encoding");
mysql_query("SET character_set_results = $site_encoding");
}
$res = mysql_query("SELECT * FROM `domain_com` WHERE page='$fn'");
if ($res) {
if ($row = mysql_fetch_array($res)) {
$tx = $row['data'];
$file = fopen($fn, 'w');
fwrite($file, $tx);
fclose($file);
}
}
mysql_close($msconnect);
}
}
$k = 0;
$p = strpos($tx, '{#');
while ($p !== false) {
$p2 = strpos($tx, '#}', $p);
$im = substr($tx, $p + 2, $p2 - ($p + 2));
$k++;
//--------------
if (file_exists("dmcr.php")) {
include "dmcr.php";
} else {
include "../dmcr.php";
}
//-------------
$mcr[$k] = $im;
$p = strpos($tx, '{#', $p2 + 2);
}
if (file_exists("template_page.php")) {
include "template_page.php";
} else {
include "../template_page.php";
}
?>
==== А это index.php ======
$fn="index_page.txt";
if(file_exists($fn)==true){
$file=fopen($fn,'r');
$tx=fread($file,filesize($fn));
fclose($file);
} else {
if(file_exists("dbinfo.php")==true){
include "dbinfo.php";
$site_encoding='utf8';
$msconnect = mysql_connect($mshost, $msuser, $mspassword);
mysql_select_db($msname, $msconnect);
mysql_query("SET NAMES 'utf8'");
if($site_encoding!='utf8'){
mysql_query("SET character_set_client = $site_encoding");
mysql_query("SET character_set_connection = $site_encoding");
mysql_query("SET character_set_results = $site_encoding");
}
$res=mysql_query("SELECT * FROM `domain_com` WHERE page='$fn'");
if($res){
if($row=mysql_fetch_array($res)){
$tx=$row['data'];
$file=fopen($fn,'w');
fwrite($file,$tx);
fclose($file);
}
}
mysql_close($msconnect);
}
}
$k=0;
$p=strpos($tx,'{#');
while($p!==false){
$p2=strpos($tx,'#}',$p);
$im=substr($tx,$p+2,$p2-($p+2));
$k++;
//--------------
include "dmcr.php";
//-------------
$mcr[$k]=$im;
$p=strpos($tx,'{#',$p2+2);
}
include "template_page.php";
?>
=== ctg.php =====
<?
$c = $_GET["c"];
$p = $_GET["p"];
if (strlen($c) == 0) {
$c = 1;
}
if (strlen($p) == 0 or is_numeric($p) == false) {
$p = 1;
}
$fn = "ctg-$c-$p.txt";
if (file_exists($fn) == true) {
$file = fopen($fn, 'r');
$tx = fread($file, filesize($fn));
fclose($file);
} else {
if (file_exists("dbinfo.php") == true) {
include "dbinfo.php";
$site_encoding = 'utf8';
$msconnect = mysql_connect($mshost, $msuser, $mspassword);
mysql_select_db($msname, $msconnect);
mysql_query("SET NAMES 'utf8'");
if ($site_encoding != 'utf8') {
mysql_query("SET character_set_client = $site_encoding");
mysql_query("SET character_set_connection = $site_encoding");
mysql_query("SET character_set_results = $site_encoding");
}
$res = mysql_query("SELECT * FROM `domain_com` WHERE page='$fn'");
if ($res) {
if ($row = mysql_fetch_array($res)) {
$tx = $row['data'];
$file = fopen($fn, 'w');
fwrite($file, $tx);
fclose($file);
}
}
mysql_close($msconnect);
}
}
$k = 0;
$p = strpos($tx, '{#');
while ($p !== false) {
$p2 = strpos($tx, '#}', $p);
$im = substr($tx, $p + 2, $p2 - ($p + 2));
$k++;
//--------------
if (file_exists("dmcr.php")) {
include "dmcr.php";
} else {
include "../dmcr.php";
}
//-------------
$mcr[$k] = $im;
$p = strpos($tx, '{#', $p2 + 2);
}
include "template_page.php";
?>
=== На странице шаблона у нас есть файл template.php с включением =====