Всем привет.
Возникла необходимость перевести сайт, который представляет из себя около 10 тысяч html статичных страничек, перевести на php с подгрузкой информации из базы данных.
Написал скрипт php , который сканирует папку с html страничками и берет из них важные блоки.
Но проблема в том что файлов 10 тысяч, а записей в базу создается более 200 тысяч. Запускаю через cron на openserver. Перед запуском скрипта таблицу очищаю. Повторные запуски исключены, так как после того как скрипт запускается я его комментирую.
$link = mysqli_connect("localhost", "root", "", "pages");
$directory = 'pages/';
$scandir = scandir($directory);
$metatag_content = '';
$categories_panel = '';
for ($i=0; $i<count($scandir); $i++) {
if ($scandir[$i] != '.' && $scandir[$i] != '..' && $scandir[$i] != '.htaccess') {
if (($result = mysqli_query($link,"SELECT * FROM `content_lite_add_tabs` WHERE `name` = '".$scandir[$i]."'")) && mysqli_num_rows($result) == 0 ) {
$data = file_get_contents($directory.$scandir[$i]);
$data = preg_replace("#<script[^>]*>.*?<\/script>#is", "", $data);
$data = preg_replace("#<meta[^>]name=\"description\"[^>]*>#is", "", $data);
preg_match_all('/<head[^>]*?>.*?<\/head>/is', $data, $head);
preg_match_all('/<form[^>]*?action="\/basket\/add.php"[^>]*?>.*?<\/form>/is', $data, $form);
preg_match_all('/<ul[^>]*?class="breadcrumbs"[^>]*?>.*?<\/ul>/is', $data, $breadcrumbs);
preg_match_all('/<h2[^>]*?class="tabs__head"[^>]*?>.*?<\/h2>/is', $data, $tabs__head);
preg_match_all('/<div[^>]*?class="tabs__body"[^>]*?>.*?<\/div>/is', $data, $tabs__body);
if (preg_match("/<meta[^>]*?property=\"og:type\"[^>]*?content=\"product\"[^>]*?>/is", $data)) {
$metatag_content = 'product';
} elseif (preg_match("/<meta[^>]*?property=\"og:type\"[^>]*?content=\"product.group\"[^>]*?>/is", $data)) {
$metatag_content = 'product.group';
} else {
$metatag_content = '';
}
$data = (isset($form[0]) && isset($head[0]) && isset($head[0]) && isset($tabs__head[0]) && isset($tabs__body[0])) ? $head[0][0].$breadcrumbs[0][0].$form[0][0].$tabs__head[0][0].$tabs__body[0][0] : "";
unset($head, $breadcrumbs, $tabs__head, $tabs__body);
if (!empty($data)) {
mysqli_query($link, "INSERT INTO `content_lite_add_tabs` (`data`, `name`, `metatag_content`) VALUES ('".addslashes($data)."', '".$scandir[$i]."', '".$metatag_content."');");
}
}
}
}
Причем если счетчик в цикле, то он пишет что итераций цикла было столько и страниц.
Раньше скрипт работал быстро и без дублей. МОжет ли такое быть из-за того что добавил в базе поле id с первичным ключем и индексом?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как получить reactions в Slack зная его timeStamp? Используя JavaУ меня бот видит новые сообщения и всю информацию об сообщении, но обратиться к старому...
Есть унаследованная база данных, пытаюсь построить вокруг нее приложениеПроблема в том что я получаю периодически Duplicate entry при попытке вставить...
Есть массив объектов: