Имеется база данных размером 10 млн. строк под управлением mySQL.
Необходимо на основании текущей базы создать новую базу размером от 500 тыс. до 1 млн. (рандомное значение в этом интервале) строк с рандомными строками первичной базы.
Структура первичной базы:
1. Id
2. Varchar(500)
Во втором столбце содержится текст.
Структура новой базы:
1. Id
2. Varchar(500)
3. Varchar(500)
Первых два столбца идентичны столбцам из первичной базы. В третьем столбце содержится строка из второго столбца в транслите.
Т.е. например, во втором столбце содержится текст: "купить пластиковые окна", то в третий столбец попадет значение: "kupit-plastikovie-okna" после обработкой скрипта.
Каким образом можно максимально быстро реализовать подобное, при этом не положив сервер?
Задача - именно максимально быстро ускорить данный процесс.
Подскажите, кто сталкивался с подобным, каким образом с помощью php можно разбить html-страницу на блоки: выделить основную часть с контентом, меню, футер и т.д., не зная структуру DOM?
Интересует в большей степени определение основного контента страницы.
В сети есть материалы на эту тему, но что-то я не совсем понял алгоритм реализации.
В общем, задача сейчас больше свелась к тому, как ускорить процесс генерации.
Понял, что создавать 100500 html файлов на сервере не очень хорошая затея, решил, что лучше помещать все в SQLLite базу. И потом уже генерировать страницу на лету на основе шаблона.
Вообще, цель всего этого - генерация страниц для сайтов. Т.е. каждый сайт будет иметь 250к - 1кк страниц.
Встает вопрос, как ускорить процесс записи в SQLLite базу (для каждого сайта база своя) и не положить сервер, если за раз мы генерим, скажем, 50 сайтов.
Как я предполагаю, поочередно производить запись в лайт-базу для каждого сайта будет очень долго.
Т.е. получается такая схема:
Есть SQL база под управлением MySQL. В ней несколько таблиц. В каждой таблице 1кк-3кк строк.
Необходимо сгенерировать 50 сайтов за раз, в каждом сайте по 250к - 1 кк страниц.
Для каждой страницы идет выборка из нескольких таблиц SQL базы, текст обрабатывается и записывается в SQlLite базу каждого сайта.
Как лучше оптимизировать все это дело, чтобы и скорость была максимально возможной, и в тоже время сервер не падал?
Задача следующая - нужно максимально быстро и безопасно в плане нагрузки генерировать большое количество (около 1 млн.) html файлов на лету и сохранять их на диск.
Файлы генерируются на основе шаблона и строк текста. По 30-50 строк на файл.
Вопрос: откуда лучше делать выборку этих строк (можно подряд идущих) из БД или же из txt файла, чтобы скорость выборки и генерации была наиболее высокой и от нагрузки не падал сервер?
При генерации каждого файла - идет новая выборка этих 30-50 строк.
Возникла необходимость написать своеобразный шаблонизатор для одной CMS на основе существующих страниц.
Суть идеи:
1. Указываем скрипту ссылку на страницу существующего сайта, на основе которой нужно сделать шаблон
2. Скрипт обрабатывает эту страницу следующим образом:
- Удаляет весь контент (текст, картинки, таблицы и т.п.)
- Заместо этого контента вставляет макрос (к примеру: [TEXT])
- Заменяет все ссылки на макрос (к примеру, на [LINK])
- Заменяет мета-теги (title, description)
- Подключаемые файлы (css, js и прочее) не трогает, пути остаются такими же.
Проблема в том, как определить, в каком именно месте выводить макрос [TEXT]. Так как текст на странице может выводиться и в футере, и в сайдбаре.
Нужно как-то определить место, где выводится основной контент страницы, и заместо него вставить этот макрос.
Также сложность возникает в удалении картинок. Могут быть картинки из контента, а могут быть те, которые прописаны в шаблоне (элемет дизайна).
Нужно, чтобы каждое слово в файле встречалось всего 1 раз.
Т.е. алгоритм следующий:
1. разбиваем строку на слова
2. ищем вхождение каждого слова в каждой строке последующей строке
3. если вхождение найдено, заменяем его на ""
На выходе должен быть файл, в котором:
а) строки имеют такой же вид, как в первоначальном файле
б) заменены все повторы слов на ""
Ничего страшного, если будут строки такого вида:
абордаж||сцепка|свалка
Т.е. будут рядом две вертикальные черты "||". Главное, чтобы в пределах разных строк не было повторов слов.
Зачем это все надо:
Далее этот файл поместится в БД. При выборке какого-то конкретного одного слова, база должна возвращаться одну строку.
Сейчас же из-за повторов слов в разных строках база возвращает несколько строк, в которых находит вхождение заданного слова.
Задача следующая. Есть txt файл формата:
красивый|быстрый|смелый
хорошой|пестрый|длинный
бледный|красныцй|ярый|беглый
смелый|настоящий|кран
бледный|красныцй|ярый|беглый
румяный|пестрый|яростный
Нужно сравнивать слова из каждой строчки со всем файлом и в случае нахождения слова в другой строке, добавить эту строку(строки) к текущей проверяемой. Далее сохранить эту строку в новый файл.
Т.е. как мы видим, некоторые слова могут встречаться в других строках. Например, вот 2 строки:
красивый|быстрый|смелый
смелый|настоящий|кран
Здесь, как мы видим, встречается одинаковое слово "смелый".
Скрипт должен соединить эти строки так: "красивый|быстрый|смелый|смелый|настоящий|кран" и записать в новый файл.
Слова в новом файле в разных строках повторяться не должны.
Т.е. релузьтатом работы скрипта в данном случае был бы файл с таким содержанием:
Вся проблема в том, что этот код писал не я, а программист, с которым я сотрудничал. Программист пропал, и теперь мне приходится самостоятельно дорабатывать этот код.
К сожалению, в JS я полный нуль.
Panoptik, не могли бы вы доработать этот код так, как надо?
С помощью этих двух скриптов реализуется поиск по базе в поле на сайте.
Т.е. когда вводишь в поле какое-либо слово, находятся значения из базы, в которых есть вхождения этого слова и предлагаются для выбора: http://clip2net[dot]com/s/3lrHX3d
Как видно из php скрипта, выводится 2 значения: title ($inter -> post_title) и ID записи ($inter -> ID)
Проблема в том, что при отправки формы, отправляется только первая часть ($inter -> post_title), а ID не отправляется.
Но если посмотреть через консоль браузера это поле в форме, то там выводятся помимо тайтла также и значения ID: http://clip2net[dot]com/s/3lrIryy
Подскажите, пожалуйста, что нужно исправить, чтобы вместе с заголовком на сервер отправялся ID записи, но при этом в поле при поиске ID не выводился: http://clip2net[dot]com/s/3lrIygO
Т.е. все так как сейчас, но чтобы ID отправлялся на сервер для дальнейшей обработки.
Задача стоит такая.
Есть:
Массив предложений
Массив картинок
Массив заголовков
Нужно, чтобы при каждом обновлении страницы выводилась мешанка из всего этого. Т.е. структура страницы постоянно менялась.
К примеру, берем от и до предложений из массива.
Предложения разбиваем на абзацы (также указываем от и до предложений на абзац и сколько делать абзацев (от и до)).
Берем от и до картинок из массива.
Берем от и до заголовков из массива.
Скрипт это все перемешивает и выводит в рандомном порядке.
К примеру, при первом обновлении страницы выдаст:
Абзац
Картинки
Заголовок
Абзац
Абзац
При втором обновлении выдаст:
Картинка
Заголовок
Абзац
Картинка
И т.д.
Заранее спасибо всем, кто откликнется на мою просьбу!