$prichina="Размер файла должен быть В ПРЕДЕЛАХ 1Мб.";
returnfalse;
}
предполагаю, что тк изначально нет инпутов для файлов то яваскрипт собирающий с нее данные, возможно не видит вновь добавленных инпутов, те не передает значение из вновь добавленного на страницу инпута MAX_FILE_SIZE
если есть яваскрипт валидатор на форме, или пропишите пару строк для этого, чтоы вывести значения из него на экран.
возможно надо использовать для вновь созданных дом элементов
$(document).on('click'...
собрать данные и зформы
);
пример
вот мы на центральной странице: отображает все объявления
имеем сумму объявлений рис1
по регионам
по типу
по разделам
перешли на страницу покупка рис2 и видим сумму объявлений только о покупке
по регионам
по типу
по разделам
перейдем в раздел - получим сумму только о покупке регионам, типу и разделам
отметим частные - получим сумму только частных о покупке регионам, типу и подразделам
и тд
соответственно если выбрали регион - то тоже по городам региона
нужно всегда получать сумму объявлений по регионам типу категориям с учетом дополнит. параметров
както так ...
как организовать подсчет всех сумм в таком разрезе?
да я уже перечитал мануал...
10 раз переделывал уже - никак не приду к требуемому результату, кроме как через count, щас скрины прилеплю чтоб видно было, что надо
прочитайте по 10 раз про каждую.
1 отдает существует ли вхождение - если да то ок
2 возвращает начиная с позиции первого входжения..., а тк ищем word2 и если вернет word2 (word2==word2) - то ясно что слово и есть последнее - после него нет символов, если !== то не ок.
если слово не 100500символов и знаете что word2 именно в конце, а не 5 раз посередине.
или обрежьде на strlrn(word2) символов с конца и сравните
както так.
спасибо, строку много дольше проверять.
в итоге переделал ближе к вашему совету и вообще удалил ид автоинкремент, чтоб on duplicate иды не жрал на всякий случй
для диска выгода получилаь не очевидна - 6 полей инт *4 байта =24, а в стлучае варчар максимум 12-100-1000-1000-6-25000 +1 =25 но 1-1-1-1-1-1 +1=12 даже чуть экономичней.
в where однако теперь 5 раз AND? чтоб получить счетчик для региона (ключи по столбцам 0|0|0|0|1ид_региона|0)
в итоге так сделал - ввезде инт + составной индекс уникальный
раздел|категория|рубрика|типто_вара|регион|город|сч_всего|сч_частных|сч_бизнсе|сч_бу|сч_новы|сч_покупка|сч_продаж|сч_обмен|сч_бесплптно
однако триггер получился не кислый и с условиями - чтобы реально задействовать все варианты - дергает 15 строк
хм... это допустимо / на сколько может быть плохо или критично 15 записей?
может и кеш пока отрезать, ведь выбор счетчика по полю с where должен очень быстро + ещё пару индексов сделать составных под запросы
чтото не очень нравится правка 15 строк + чтение, чтение...
они так стартую потому что пути кривые, а именно ищет в той папке исполняемого скрипта куда подключаете. проставьте относительный путь - от места где скрипт.
я имел ввиду не буквально "абсолютные" с http://www..., а от корня.
для а ю так <link rel="stylesheet" href="/css/styles.css"> поставьте, оно же в шаблоне/index/mvc-viev те один раз подключается как я понимаю
а не like %1%
он сравнить не может изза типа чтоли
надо, чтобы отдавало строки где region_id==sum_id, те 1=1 отдавало, а 1=1-1 или 1=1-25-35 нет
как написать чтоб так?
решил что символьный проще, тк при чтении сразу вижу что отдавать, а если по колонке на регион и город и инт то нужно с сравнивать по двум столбцам и в where пользовать and несколько раз
полагаю что так быстрее
хотя можно б было и несколько + индекс множественный, но ведь where and and and как то не нравиться
моежек какое другой решение видите?
region_id значения (1,2,3,4,5,6)
sum_id (1, 1-1, 1-25-358, 2, 2-25 и тд)
если region_id==1 так оно отдает все строки где sum_id имеет 1
где подвох?
все InnoDB
данных для беларуси например - 500 000
а рубрик 1000 и городов (населенных пунктов) 23000, реально какая то деревня не пользует все 1000 рубрик, а то и вообще не учавствует поэтому и insert on duplicate key update, а если сразу забить, то уже 23 ляма (и это не все счетчики)
я поэтому и интересуюсь - как это можно организовать? а пока пользую то что есть.
чтоб и правильно, и хорошо, стараюсь внимательно вчитываться в каждое слово.
получается что табл. с агрегированными данными (счетчиками) будет всегда консистентной при обновлении ее триггером после создания/удаления объявления, что позволит отдавать всегда свежие данные при чтении с неё и на начальном этапе не использовать мемкеш
в итоге склоняюсь к такому алгоритму:
после создания/удаления объявления триггером на ней выполняем +1/-1 к соответствующим строкам (сейчас строк 6) таблице со счетчиками
+ постоянное чтение по ид без условия и сортировок
в принципе должно работать быстро
+прихожу к выводу, что возможно нужно выкинуть сумму по регионам, которая дергается всегда, что чуть разгрузит бд на 1/6 транзакции обновления как я понимаю
...опять встает вопрос в скорости работы:
1 но какие могут быть скрыты проблемы, ведь в итоге тут будет строк многократно больше чем самих данных (объявлений) ?
2 стоит триггер insert on duplicate, тк какие то рубрики в каких то городах вовсе не задействованы, таблица меньше, возрастает по мере вовлечения рубрик в городах - или стоит изначально забить все возможные варианты, но сразу неимоверно увеличить количество строк
3 в итоге уберем count, но как со скоростью инкрементирования и чтения?
дело в том, что в t2 может быть только одна соответствующая строка с двумя полями (ключ варчар и значение)
реально ключ для связи формируется динамически от пользовательских запросов, это условный пример ключ "1" => в т2
1-1
1
1-1256-12
выбираем ключ 1
?вроде как пробела не должно быть IFNULLтут(...
?я кеширую - можно подробней пример или как "дёргать триггером"
ставлю по таймауту тк за это время данные могут (99%)изменятся (в том то и сложность чтоб отдавать как можно более свежие данные , разгрузив бд).
:
добавили объявление - изменилась их сумма в регионе, городе, разделе, категории, рубрике.
это ключи в т2 изменяем значения +1 для ид: (регион, регион-город, регион-город-раздел,...)
в кеш ложу выборки - html 1500-3500 символов, в итоге получаю, пример:
запрос пользователя на главн стр, те для данной страны
отдаю html + html из мемкеша, разобрав в блоки шаблона по разделителю:
из кеша
сумму объявлений по регионам (из т2)
сумму объявлений по разделам (из т2)
итог расчета count сумму объявлений всего/покука/продажа/обмен/беспл атно в данном примере по стране
из скрипта
последние 10 объявлений
если перехожу в раздел => все тоже только для категории
если перехожу в регион => все тоже только для городов региона
если перехожу в город и раздел=> все тоже только для категорий этого раздела по этому городу
? поэтому и по таймауту тк данные постоянно меняются, но мы можем позволить чуть их актуальность задерживать
если нет ключа в t2 то выдаёт список, где col2 повторяется несколько раз
что может быть или как по другому запросить ?...
и немного теории
2
для получения агрегированных данных (сумм по рубрикам и категориям в разрезе регионов и тд) к нагруженной таблице (частый инсерт апдейт дел) думаю поставить триггер, который будет добавлять/обновлять в другую таблицу (t2 из предыдущ. вопроса) после вставки +1 к нужным строкам - один запрос инсерт с конкатенацией и on duplicate , вставка или обновление за раз всего строго 6 строк.
эта таблица, после полного набора вариантов ид (более 3млн как минимум) в итоге будет только обновляться и пользоваться на чтение
все для того, чтоб меньше использовать count на большом наборе данных
основное - сильно ли это будет нагружать бд (дергание триггером 6 строк по ид варчар) при постоянном чтении по ид?
какой альтернативный вариант организации может быть?
3
пользую memcahe для хранение результатов count запросов на больших данных, храню 1 минуту, +использую lock ключ на 50 сек, а пока идет первый конкурентный запрос отдаю старые данные.
(чтоб не делать count, а делать выборку - для этого и триггер из вопроса 2)
загоняю сразу готовый html под один ключ около 1500-3500 символов, а при выборке, разбиваю массив по разделителю и вывожу в разных блоках...
думаю что готовый html хранить лучше или как?
как проследить сколько у меня хранится значений в 1500-3500 символов, и как такой размер нагрузит мемкеш?
может можно как-то лучше реализовать алгоритм?
(нет никого в реале у кого можно было бы gjkexbnm консультации )