если используется vds или сервер, то лучше настроить собственный кеш nginx-а для хранения картинок.
у меня режутся картинки на лету и сохраняются в кеше nginx-a на 365 дней. если нужно, то можно дернуть любую картинку/тумбу с "волшебным" параметром и она принудительно пересоздастся из исходника.
данное решение хорошо масштабируется, можно резать на нескольких бекендах одновременно. я запускал на трех - работает быстро и красиво.
Solmyr: Ну в общем проблема оказалась в том что по пхп не существует библиотек, которые осуществляют последовательную итерацию строк из dbf файла
странно, что не нашлось быстрых "импортеров".
насколько я помню, давно с ними работал, в формате dbf3-dbf4 фиксированная длинна одной записи(в пределах одного файла). возможно засада будет на полях memo - не помню и вспоминать не хочу. :)
но в простейшем случае можно:
1. прочитать заголовок и вычислить длинну записи
2. установить указатель чтения на первую занись и дальше обычное потоковое чтение файла порциями "длинна записи" * "кол-во записей" (т.е. к примеру читать по 1-5тыс записей в память и затем одним инсертом забрасывать эти 1-5тыс записей в sql сервер)
б) завести дополнительное поле "Накопительный вес". Потом: 1) зная суммарный вес WeightSum, 2) генерируем случайное число $WeightRand = rand(0, Sum) 3) выбираем из базы запись с условием WHERE Weight > $WeightRand ORDER BY Weight ASC LIMIT 1 Минусы: при деактивации баннера нужно обновлять накопительные веса всем баннерам после него.
заинтересовало... ктати, выборку можно сделать на чистом sql, без пхп и т.д.
И зачем такие сложности? разбор хтмл-а, телепорт, фантом...
Там все замечательно забирается джейсоном. Отдаются уже структурированные данные, не нужно выковыривать их как в случае с хтмл.
первый запрос: http://www.cikrf.ru/services/lk_tree/?first=1&id=%23 потом из джейсона достаем id-шки и сохраняем в базу дергаем каждую id-шку, например: http://www.cikrf.ru/services/lk_tree/?id=6434118731 сохраняем новые id-шки и повторяем пока не вытащим все.
Sly32: у меня на артистере сайт остался - trutravel.ru руки не доходят переписать. Хотел нанять , запросили от 1000 долларов за аналогичны функционал на рельсах. ЧТоб он хоть немного шевелился, артистерский шаблон пришлось сильно переделывать и кэшировать, иначе была куча проблем
даже сейчас на статье: 235 queries.
даже боюсь предположить, сколько запросов было до переделки. 😂
оффтоп: 1000 за все(с наполнением) - вроде нормально, малость поклацал по сайту, контент - битый граб, да и половина картинок недоступна. такое чудо уже не реанимировать. намного проще будет делать с нуля и на другом домене.
shelev: В соседней ветке пишут, что сейчас новые карты не прикрепляют /ru/forum/942831 Поэтому видимо придется пока довольствоваться интернет-картой, во всяком случае пока не заработает прикрепление.
что общего между "не приклепляют к какому-то сервису" и свифт платежами, которыми выплачивает адсенс? я бы не стал это обобщать.
Ресайзить по мере поступления запроса и кешировать
пхп с file_exist можно лишний раз и не дергать, это лишнее.
в апаче есть RewriteCond %{REQUEST_FILENAME} -f
в nginx есть try_files
если используется vds или сервер, то лучше настроить собственный кеш nginx-а для хранения картинок.
у меня режутся картинки на лету и сохраняются в кеше nginx-a на 365 дней. если нужно, то можно дернуть любую картинку/тумбу с "волшебным" параметром и она принудительно пересоздастся из исходника.
данное решение хорошо масштабируется, можно резать на нескольких бекендах одновременно. я запускал на трех - работает быстро и красиво.
Основной вопрос, который требует ответа: а нужно ли "множество превьюшек разных размеров" ?
Если пропорции более-менее не нарушаются, то намного проще css-ом подогнать размер, чем плодить лишние сущности.
Обычно достаточно: small / medium / full или даже что-то одно small_или_medium и full
По нарезке: забыли еще про крон. Удобно резать неспеша и в фоновом режиме.
На лету тоже отлично режется: отрезал - сохранил на диск, в следующий раз отдал сразу с диска.
Ну в общем проблема оказалась в том что по пхп не существует библиотек, которые осуществляют последовательную итерацию строк из dbf файла
странно, что не нашлось быстрых "импортеров".
насколько я помню, давно с ними работал, в формате dbf3-dbf4 фиксированная длинна одной записи(в пределах одного файла). возможно засада будет на полях memo - не помню и вспоминать не хочу. :)
но в простейшем случае можно:
1. прочитать заголовок и вычислить длинну записи
2. установить указатель чтения на первую занись и дальше обычное потоковое чтение файла порциями "длинна записи" * "кол-во записей" (т.е. к примеру читать по 1-5тыс записей в память и затем одним инсертом забрасывать эти 1-5тыс записей в sql сервер)
это должно отработать очень быстро.
б) завести дополнительное поле "Накопительный вес".
Потом:
1) зная суммарный вес WeightSum,
2) генерируем случайное число $WeightRand = rand(0, Sum)
3) выбираем из базы запись с условием WHERE Weight > $WeightRand ORDER BY Weight ASC LIMIT 1
Минусы: при деактивации баннера нужно обновлять накопительные веса всем баннерам после него.
заинтересовало... ктати, выборку можно сделать на чистом sql, без пхп и т.д.
исходную табличку дополнил полем WeightSum:
вроде работает :)
И зачем такие сложности? разбор хтмл-а, телепорт, фантом...
Там все замечательно забирается джейсоном. Отдаются уже структурированные данные, не нужно выковыривать их как в случае с хтмл.
у меня на артистере сайт остался - trutravel.ru руки не доходят переписать. Хотел нанять , запросили от 1000 долларов за аналогичны функционал на рельсах. ЧТоб он хоть немного шевелился, артистерский шаблон пришлось сильно переделывать и кэшировать, иначе была куча проблем
даже сейчас на статье: 235 queries.
даже боюсь предположить, сколько запросов было до переделки. 😂
оффтоп: 1000 за все(с наполнением) - вроде нормально, малость поклацал по сайту, контент - битый граб, да и половина картинок недоступна. такое чудо уже не реанимировать. намного проще будет делать с нуля и на другом домене.
Ну как сказать - тот же ДЛЕ не делает столько копий. там только фуллсайз и тумба 🙅.
А что мешает WordPress-у или любому другому движку делать тоже самое?
Хозяин сайта - барин, ТЗ - и все будет как хочется.
Есть ли в этом смысл?
Кеш Nginx на tmpfs vs Кеш Nginx на SSD
В случае "Кеш Nginx на SSD" может использоваться файловый кеш, т.е. данные могут быть закешированы в раме, а не читаться каждый раз с SSD.
Поэтому не стоит особо расчитывать на ускорение при "Кеш Nginx на tmpfs".
Лучше в tmpfs засунуть временные файлы mysql (если это еще не сделано).
В соседней ветке пишут, что сейчас новые карты не прикрепляют /ru/forum/942831
Поэтому видимо придется пока довольствоваться интернет-картой, во всяком случае пока не заработает прикрепление.
что общего между "не приклепляют к какому-то сервису" и свифт платежами, которыми выплачивает адсенс? я бы не стал это обобщать.
тогда уж
Частный случай, именно для этого примера: