однострочники - они такиевообще-то мы с клиентом сейчас уже разговаривали про defined('NO')
однострочники - они такиевообще-то мы с клиентом сейчас уже разговаривали про defined('NO')
это утверждение ложноБаза нужна хранить пользовательские данные,
в общем случае с распространенными базами serialize и unserialize не используются, хранить объекты удобно в jsonа не пихать туда все подряд и схатывать боли с утечкой памяти при serialize и unserialize если начнем до кучи хранить объекты и какие-то нереальные комбинации и конструкции, нагородить огород и окунуться в бездну.
эти утверждения ошибочныvar_export - это очень быстрое решение.
Ко всему еще и режим APC сможем задействовать.
Чего не будет работать в memcache и во многих других кешерах.
А require с опкешером очень любят такие файлики.
это утверждение ошибочночтобы записывать и редактировать такого рода массивы, уже не только var_export потребуется, но и написать ArrayDumper на основе данных, которые будут содержаться в ключах и значениях массива.
в массивах не бывает методовТо есть метод export и import.
это технически невозможно, пользовательские массивы исчезают в конце работы скрипта, а immutable arrays по определению не подлежат изменениюЯ не призываю использовать массивы в качестве базы данных.
логику нельзя реализовать в массивах, только в функциях и классахТак, что, лучше бд для данных, а логику выкинуть на массивы.
в общем случае очень большое количество объектов работают быстрее сопоставимого количества массивовКому-то проще сделать тонну классов и объектов и думать, что это быстро работает. =)
Ну массивы же тоже могут быть и с функциями и с определением объектов.При чём здесь объекты и сериализация.
Я понимаю тебя прекрасно, но автору требуется это через файлы.Конкретная задача - счётчик меток. В случае файлов тебе нужно следить за блокировками, как не терять данные под нагрузкой, чтобы файлик записался, чтобы данные не застряли в буфере или файловом кэше. БД такие вещи умеют из коробки.
С чего ты взял что требуется. Скорее автор не осилил БД и не понимает возможные проблемы при работе с файлами. А ваше решение с var_export вариант ещё хуже, помимо файлового кеша ещё и в опкеш ударитесь.Я понимаю тебя прекрасно, но автору требуется это через файлы.
Он же уперся изначально, что нет файлом надо, выше глянь =)
Я в принципе и сказал, как самое тогда быстрое решение массивом через файл собирать =)))
Что еще посоветовать =)
NOSQL?=)
Гриша, вот тут ты неправ.База нужна хранить пользовательские данные, а не пихать туда все подряд и схатывать боли с утечкой памяти при serialize и unserialize если начнем до кучи хранить объекты и какие-то нереальные комбинации и конструкции, нагородить огород и окунуться в бездну.
Так как массивы которые хранят в себе объекты и каллбеки, у нас вряд ли получится записать без сериализации этих данных, чтобы их записать можно было строкой.
var_export - это очень быстрое решение.
Ко всему еще и режим APC сможем задействовать.
Чего не будет работать в memcache и во многих других кешерах.
А require с опкешером очень любят такие файлики.
Но, чтобы записывать и редактировать такого рода массивы, уже не только var_export потребуется, но и написать ArrayDumper на основе данных, которые будут содержаться в ключах и значениях массива.
То есть метод export и import.
Я не призываю использовать массивы в качестве базы данных.
Лучше так не делать, если будут большие объемы, лучше хранить в бд.
А не писать phpbase =)
Так, что, лучше бд для данных, а логику выкинуть на массивы.
При этому у нас не будет огромных каких-то не реальных массивов, у нас будет лишь структура храниться которую мы получили из базы.
некий роутер, чтобы использовать в виде динамической или статической структуры массива, а также отдельно по частям если это function() {}.
Кому-то проще сделать тонну классов и объектов и думать, что это быстро работает. =)
ну что ты так с Григорием.
Товарищь честно выложил всё красивые слова, которые краем уха слышал от разработчиков.
grigori
Мы просто не до понимаем друг друга.
Реляционная база данных - это лучший вариант для счётчиков. Как только начнётся не просто "тупое хранить", а обработка данных по всем этим счётчикам на уровне БД. Плюсом сюда еще и то, что придётся таки хранить данные в нормальных формах (законы уже написаны и их даже не надо придумывать), а не устраивать вакханалию с кучей костылей на уровне РНР.При чём реляционная sql база - это тоже плохой вариант
ClickHouse вышел из чата.Реляционная база данных - это лучший вариант для счётчиков. Как только начнётся не просто "тупое хранить", а обработка данных по всем этим счётчикам на уровне БД. Плюсом сюда еще и то, что придётся таки хранить данные в нормальных формах (законы уже написаны и их даже не надо придумывать), а не устраивать вакханалию с кучей костылей на уровне РНР.
ClickHouse был не про счётчики, а про анализ данных. Не надо мешать всё в кучу и искать серебряную пулю.Посмотреть вложение 1553
1 и 3 пункты - это не про счётчики
"... это фиаско братан"
как сейчас помню когда в MySQL добавили триггеры и это стало жутко модно
особенно козыряли этим те кто не умел в SQL
под каждую задачу необходимо выбирать соответствующие инструменты
Вы последнее предложение читали? Нынче подцепить редис в проект на порядок проще, чем реализовывать без опыта счётчик на файлах.AmdY, вот зачем это человеку который собирается кодить "на файлах", а ему говорят возьми "базу данных" и не мучайся. А ты хочешь вывалить на его весь стек "современного инструментария", да еще и начиная с "преждевременной оптимизации". У человека на данный момент нет ещё даже кода, не то что сумасшедшей нагрузки. Ну а за грамотную архитектуру без костылей, при которой с ростом нагрузки и репликацию и буфер с пучком редиски и еще много чего интересного можно воткнуть, я за обеими руками.
Но повторюсь зачем это человеку который "Привет, мир" и тот пишет с тремя ошибками в слове мир?
этот сайт - форум, а не twitter, публичное обсуждение, а не диалог, пишется не для ТС, а для всех будущих читателейНо повторюсь зачем это человеку который "Привет, мир" и тот пишет с тремя ошибками в слове мир?
не мешайНе надо мешать всё в кучу и искать серебряную пулю.
Не-а там просто нету того, что мешает.Счётчик - это получение предудущего значение и его изменение. Мемкэш и редис с этим прекрасно справляются и имеют специальные встроенные механизмы.
И вот это смешивание в кучу некорректно.обычные реляционки или же кликхаус не очень хорошо себя чувствуют, когда ты их одновременно насилуешь на запись и чтение.
Держать - нет проблем, а обслуживать, обновлять, бекапить, деплоить обновления - естьСовременный инструментарий настолько удобно, что нет проблемы держать одновременно разные СУБД, а не расставлять костыли и получать проблемы по мере роста проекта.
но какие-то рамки повествования необходимо иметь, хотя бы ради приличияэтот сайт - форум, а не twitter, публичное обсуждение, а не диалог, пишется не для ТС, а для всех будущих читателей
SELECT `s1`.`type`, COUNT(DISTINCT `s1`.`id`) AS `count`
FROM `stats`
AS `s1`
LEFT JOIN `stats`
AS `s2`
ON `s1`.`type` = `s2`.`type`
WHERE `s1`.`status`=1
GROUP BY `s1`.`type`
a 113343
b 16255
c 83426
....
кто ты? зачем придумал бессмысленную задачу? задач с такой постановкой не бываетgrigori, Ок, задача посчитать все в один заход, чтобы потом все-же опять получить массив.
Это, как я понимаю, пример неправильного подхода?Данные то записываются в базу, все как нужно, пухнет на глазах, только с каждым временем начинает все медленнее и медленнее отдавать результат.