100k записей базы данных Mysql с ошибками после импорта - PullRequest
0 голосов
/ 15 мая 2018

У меня проблема с базой данных, когда она огромная. Я опишу: это очень просто - создано сторонним приложением и имеет только поля в одной таблице: «страница» и «данные» - о странице (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 с включением =====

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...