Страниц (1): [1]
Найдено сообщений: 11 |
Sigurni |
Отправлено: 21 февраля 2019 — 16:32 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
Flat пишет:Изменена концепция входа администратора в админцентр. Вопрос на засыпку: зачем существует функция повторного залогинивания админа при входе в админ центр? Мне действительно интересно.
Если у админа украдут cookie, не важно каким способом (даже через физический доступ к его ПК), то дополнительная форма авторизации не даст злоумышленнику зайти в админку. Более того, данный способ может служить дополнительной защитой от различных CSRF и XSS-атак, с которыми в своё время сталкивался ExBB. А поскольку админка может состоять не только из функций ядра, проверенных при выпуске дистрибутива форума, но и дополняться сторонними модулями, которые не всегда есть возможность проверить у авторов движка, такой способ защиты всё ещё актуален.
Flat пишет:Насколько я знаю нигде такого нет..
Поставьте какой-нибудь другой движок. Если бы вы это сделали, то увидели бы, что такой способ используется и в phpBB, и в IP.Board, и в XenForo (пруф в видео по ссылке)
Flat пишет:И сейчас именно так и есть! Понятно что делали студенты первокурсники, это по коду сплошь видно и понятно.
Почему вы в своих сообщениях поливаете грязью предыдущих разработчиков, при этом у пользователей этого движка уже более 10 лет всё прекрасно работает, и этот форум наглядное тому доказательство? И да, покажите уже наконец ваш код. |
Sigurni |
Отправлено: 13 февраля 2019 — 14:55 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
Flat пишет:По ходу родилось ещё предложение: сделать так, чтобы было возможно отправлять некоторых юзеров в полный игнор..
Вы хоть что-нибудь сделайте... Пока только целый год здесь одни ваши слова. |
Sigurni |
Отправлено: 13 февраля 2019 — 14:48 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
Flat пишет:А нам нужен вариант, который одинаково подходил бы под разные версии интерпретаторов, в том числе и 4-х.
И костыли для исправления ошибок (в том числе уязвимостей) PHP 15-летней давности, который уже сами разработчики давно не поддерживают, тоже в код вставлять будете? Да уж, тут действительно GE (Goldvno Edition) намечается.
Flat пишет:Многие из продвинутых пользователей, особенно среди хакеров. Рекомендую.
Гуглите.
Вы разрабатываете форум для какеров, ой, простите, хакеров?
Flat пишет:Я не потому против засилья js, что многие отключают, а потому, что это усложняет поддержку движка.
JavaScript - самый популярный язык программирования по статистике коммитов на сервисе GitHub за последние 5 лет. И взлёту его применения способствует именно простота. Многие проекты даже переезжают с PHP на NodeJS. Миллионы разработчиков не могут ошибаться: _https://octoverse.github.com/projects#languages. Но вы у нас уникум, вам это почему-то сложно.
Flat пишет:Во-первых, посмотреть можно будет, когда доделаю. Во-вторых, это будет практически новый двиг с включением старого кода. это чтобы не годами заниматься. Просто я делаю так, как считаю правильным. Потому что в коде движка много запутанности, отсутствует строгая логическая ясность. привожу всё к должному виду. Не нравится? Идите лесом, или полем..
Опять 25. У вас то модификация, то новый двиг, то опять модификация, то снова новый двиг.
Мне осталось только пожелать вам удачи в изобретении велосипедов! Они всегда идут так сложно, через смену направления работы по 100500 раз.
P.S. Больше в ваши темы заходить не буду. |
Sigurni |
Отправлено: 13 февраля 2019 — 13:05 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
Flat пишет:На данном этапе переделанный движок находится в работоспособном состоянии.
Где?
Flat пишет:что сделало код движка гораздо более понятным, читабельным
По мнению кого?
Это результаты бенчмарков? Где с ними можно ознакомиться? Каким инструментом тестировали? Под какой нагрузкой проверяли?
Или это снова ничем не подкреплённые слова?
Flat пишет:все функции движка получили префикс exbb_. Это позволит уменьшить возможные кофликты разных кусков кода в дальнейшем.
PHP последние 10 лет развивается (и успешно, между прочим) в сторону пространств имён и правильной организации кода, как раз чтобы уйти от глобального пространства имён и костылей, связанных с их решением (читай, префиксов). Но... Как в анекдоте: мыши плакали, кололись, но продолжали пожирать кактус. Так и тут с префиксами. Добро пожаловать в 2004 и PHP4 обратно.
Flat пишет:CODE:$RootPath=dirname(__FILE__).'/';
А dirname тут зачем? Есть же сразу __DIR__. Про то, что глобальные переменные это просто ужос, уже ранее говорил, повторяться не стану. В PHP нет константных переменных (только сами константы), соответственно, достаточно любому моду что-либо сделать с глобальной переменной (случайно или специально), и весь форум перестанет работать. Более того, рано или поздно столкнётесь с тем, что и к таким переменным будете префиксы прикручивать, чтобы "уменьшить кофликты разных кусков кода".
Flat пишет:Многие юзеры и я в том числе отключают джава скрипты в своих браузерах для безопасного сёрфинга по и-нету.
Кто эти многие? Приведите пример или ссылку на исследование. Или снова пустые слова?
Вот статистика от компании, занимающейся метрикой в вебе: https://blockmetry.com/blog/javascript-disabled
В 4-м квартале 2016 г. таких пользователей было аж целых 0.2%, из них большая часть - это пользователи Tor, что вполне объяснимо.
Если у вас есть другая статистика, или приведите здесь ссылку, или просто перестаньте подменять актуальное положение дел своим мнением, выдавая его за всеобщее.
Вы хоть раз сами пробовали отключить JS и зайти хотя бы даже в почту или поисковик, не говоря уже о социальных сетях, сайтах Интернет-магазинов и т.п.
Flat пишет:Многое можно сделать чисто html и php скриптами.
Зачем всё так усложнять? не понимаю..
Вперёд: возьмите редактор сообщений на этом форуме и сделайте его "чисто html и php скриптами". Уж очень хочется на это посмотреть, как вы frontend-часть будете реализовывать на языке разметки и на сервере.
Остальное комментировать даже лень. Взять движок 10-летней давности, поменять пути (старые, к слову, прекрасно работают), дописать префиксы в функции, что-то там сделать с дизайном админки (негде даже на это посмотреть) и заменить 2-строчный JS в быстром переходе по разделам - это определённо сильно, тянет даже не на Gold, давайте сразу Platinum. |
Sigurni |
Отправлено: 11 февраля 2019 — 14:26 • Тема: Мод: Текстовое подтверждение при регистрации • Форум: Модификации и дополнения |
Ответов: 97 Просмотров: 0
|
NordWest пишет:Развитие остановилось ввиду попыток монетизации. Платные моды делают движок экслюзивным и сильно затрудняют его поддержку.
Развитие остановилось потому, что здесь не осталось разработчиков. А оставшиеся здесь админы и некоторые продвинутые пользователи ничего, кроме как собирать сборки из наработок (фиксов, модов) от прошлых разработчиков, не умеют, к сожалению. Поэтому из года в год здесь появляются очередные "Final", "2.0" и т.п., в которых ничего особо нового по сравнению с FM 1.0 RC1 (между прочим, ровно 10-летней давности) нет.
А по поводу монетизации... Модель, которую предлагал сначала yura3d, а затем и WebMaster, на мой взгляд была довольно неплохой. Предлагалось не покупать копии закрытых модов и др. разработок, а софинансировать их разработку и публикацию в паблик. В финансировании участвовали только те, кому разрабатываемый функционал был реально нужен, а в итоге его получали все под GPL с открытым исходным кодом. По крайней мере, те годы (2010-2011) были золотыми для этого движка, потому что реально было какое-то развитие, тут иногда каждый день публиковалось что-то новое. Форумов в рунете (и не только) на ExBB было очень много. |
Sigurni |
Отправлено: 8 февраля 2019 — 15:18 • Тема: Мод: Текстовое подтверждение при регистрации • Форум: Модификации и дополнения |
Ответов: 97 Просмотров: 0
|
Flat пишет:Зачем переделываю? Потому что, как я уже писал, во-первых, переделка ExBB на ооп была ошибкой, которая практически похоронила движок. Если раньше им могли заниматься непроффессиональные программисты-любители, то сейчас их просто не осталось совсем. А проффессионалы с этим вообще связываться НИКОГДА не будут..
Где вы нашли ООП в ExBB? Несколько несчастных классов, которые используются в манере неймспейсов, как синглтоны, это что ли ООП? Никак не могу понять, как смена синтаксиса вызова функций в этих классах с префиксов на стрелочки "практически похоронила движок"... Тем более, что эти классы написаны ещё под PHP4, когда синтаксис ООП у PHP был ещё в зачаточном состоянии. Ну да ладно, может в вашем понимании "любители" это этакие имбицилы, для которых ключевое слово "class" оператор "->" это что-то невероятное.
Теперь по поводу "профессионалов". Скажу так: профессионалы никогда не будут связываться с движком, который работает с самописной СУБД. Под самописной СУБД я имею в виду в принципе любое решение, отличное от де-факто ставших уже стандартом в вебе популярных SQL (MySQL, PostgreSQL, на худой конец SQLite) и NoSQL (redis, mongodb, memcached) решений. Поэтому в своё время остановилось развитие ExBB, тоже самое ожидает и ваше детище, что вы там пишите. Никому, кроме вас и горстки оставшихся на этом форуме фанатиков, оно будет не нужно.
Flat пишет:А сейчас разве не так? Класс-то синглтон! Там везде эмуляция глобальных идёт! Так зачем извращаться? Проще и намного оставить глобальные глобальными.
Так было с самого начала задумано. Почему отказались и пошли своим путём? Надо было с самого начала совершенствовать данную концепцию простого и понятного движка! А усложнили в угоду коммерции, имхо.. Я, просто, возвращаю всё на свои рельсы..
Вы, когда говорите сейчас, имейте, пожалуйста, в виду тот факт, что ядро ExBB FM 1.0 было написано в 2007 году (при этом много было взято из оригинального ExBB 1.9.1 2004 года), и потом его изменение было заморожено, чтобы не терять совместимость с уже написанными к тому моменту модулями. Уже тогда этот подход с глобальными переменными выглядел жутко устаревшим. Но копипастить эту жуть в 2019 год это уже вершина идиотизма, простите, но это так.
Изучите наконец уже что-нибудь стоящее, фреймворк Symfony или Yii, например. Там многое уже сделано из того, что вы сейчас говнокодите делаете "в лоб" (та же прямая работа с $_GET и $_POST в контроллерах). phpBB пару лет назад перебрался на Symfony и прекрасно себя чувствует, аудитория даже растёт немного, и это сейчас, когда форумы в целом теряют популярность. И разного рода модулей, тем оформления и т.п. под него - море. А всё почему? Работать с мощными и хорошо документированными фреймворком и СУБД в итоге гораздо проще, чем с набором непонятных, даже толком незадокументированных функций и файлов (что по сути и представляет собой ExBB сейчас и будет представлять то, что вы делаете). |
Sigurni |
Отправлено: 7 февраля 2019 — 13:33 • Тема: Мод: Текстовое подтверждение при регистрации • Форум: Модификации и дополнения |
Ответов: 97 Просмотров: 0
|
Flat пишет:Сейчас пришёл в норму и продолжаю делать форум практически с нуля.
Сколько раз вы его уже делаете с нуля? И всегда вот вроде бы уже "почти готово всё", "многое сделано", "тысячу раз протестировано", а потом опять с нуля...
Полностью поддерживаю Yamaliya, вы либо уже выложите здесь хоть что-то реально рабочее, либо не дразните почти в каждой теме пользователей.
Flat пишет:В файле css делаем запись:
CODE:#hd { display: none; }
поэтому его не видно при регистрации.
зато видно боту.
Это защитит только от очень тупых ботов а-ля Xrumer по состоянию на 2012 год (к слову, более поздние его версии уже не заполняют такие поля). А новые решения, работающие на базе Selenium WebDriver, phantomjs, puppeteer прекрасно могут определять видимость полей.
З.Ы. Стиль кода в спойлере "Регистрация" просто жуть. Все файлы подключаются вручную (причём зачем-то ещё и в теле функции), а про autoload, видимо, автор не слышал. Глобальные переменные, судя по этому куску кода, по итогу в движке будут повсюду... Даже в 10-летних старых версиях ExBB нет такой дичи, как прямая работа с суперглобальными массивами входных данных ($_GET, $_POST) в контроллерах и уж тем более функциях. |
Sigurni |
Отправлено: 16 декабря 2018 — 21:19 • Тема: Размышлизмы о движке • Форум: О жизни |
Ответов: 64 Просмотров: 0
|
Flat пишет:Неверно сделано. _Read более менее нормально сделали, а с _Read2Write так не получилось. Из старой версии рожки растут.
Примеры, что конкретно неправильно? И почему же этот форум столько лет прекрасно работает, а у вас эпитеты "более менее нормально" и "не получилось".
Flat пишет:Так и я могу сделать отображение в приемлемом виде в админке. Не вопрос.
Ага, т.е. вам мало написать своё некое подобие СУБД, вы собираетесь к ней ещё и некое подобие phpMyAdmin делать? И сколько лет это займёт?
Flat пишет:Ошибаетесь. Предложенная реализация подразумевает запись на старое место, и в коде движка будут предприняты все меры для того, чтобы размер файла при перезаписи сохранялся, исключением те файлы в которых записи редактируются. При добавлении потери не будет в принципе, так как старый файл сохраняется на своём старом месте. При перезаписи к примеру нескольких полей, таких как время последнего посещения можно сохранять длину записи и писать поверх старых данных. В этом случае, даже если сервер грохнется то весь файл останется цел, за исключением возможно повреждённой этой записи, и то не факт.
Что касается редактирования, то тут, конечно риск есть, но тут можно вернутся к темп файлу конкретно для данного случая. Редактируются файлы прямо скажем не часто.
Файлы редактируются чаще, чем вы думаете. Возьмите и добавьте запись в начало файла. Вы получите полную перезапись. Байки про "запись на старое место" даже не знаю, откуда вы берёте. Такая запись возможна, если вы работаете с файловой системой напрямую, на уровне её драйвера или ядра ОС. В остальных случаях вы вообще никак не можете быть уверены, каким образом файл будет физически сохранён на накопителе. Более того, системные утилиты ФС, та же defrag, могут изменять это хранение, и вы на это никак не повлияете.
Ваше решение с tmp-файлами годится разве что для создания бекапов файлов, но никак ни для рядовой работы с ними, т.к. при перемещении/переименовании файлов сразу слетит установленная ранее блокировка, и вам нужно будет использовать другой механизм синхронизации процессов для предотвращения повреждения данных.
Flat пишет:
Он ещё не набрал критическую массу..
Судя по вашему коду, он старше минимум на 14 лет вашего опыта работы с PHP. И ещё спокойно столько же лет прекрасно проработает.
Flat пишет:Во-первых, повторяю: делаю исключительно для себя, так как нужно лично мне. А другие могут использовать то, что я наваял если захотят.
Во-вторых, я считаю, что код старой версии был испорчен, и испорчен был сознательно. О причинах умолчим..
Да, некоторые вещи исправили, но заложили много подводных камней.
Я уже говорил, что эволюцию старого движка надо было продолжить в том же ключе, исправив мелкие недочёты, может быть кое что изменив. Однако этого не произошло. А те, кто продолжал заниматься старой версией даже не удосужились исправить тот основной баг с обнуление файлов, которые были практически у каждого кто пользовался тем движком. А движок то был хороший, простой и понятный.
Ну наконец-то я слышу "хороший, простой и понятный". Что и требовалось доказать. Свою полемику я начал именно с того, что вы довольно часто в своих сообщениях не очень лестно отзываетесь о том, что было сделано до вас. При этом своего толкового (и главное рабочего) вы так до сих пор ничего и не предложили. Я считаю, что стоит с пониманием и уважением относиться к чужому труду, тем более что ваша работа всё равно так или иначе на нём основывается. |
Sigurni |
Отправлено: 12 декабря 2018 — 10:40 • Тема: Размышлизмы о движке • Форум: О жизни |
Ответов: 64 Просмотров: 0
|
Нужно. Если вы читаете файл и намереваетесь внести в него изменения на основе прочитанных данных, вам нужно быть уверенным, что другие процессы в этот момент не прочитают устаревшие данные. В этот момент вы должны читать именно с исключительной блокировкой, что и сделано в ExBB. Обратите внимание, что сейчас в ядре форума присутствуют 2 метода чтения: _Read() и _Read2Write(), и какая блокировка используется в каждом из них.
Вот вы утверждаете, что:
Flat пишет:из детских штанишек уже вырос
но при этом кидаете ссылки на сайты в стиле "файловый архив студентов" вместо официального мануала. Что-то, по итогу, в утверждение о детских штанишках слабо верится...
Отвечу вам вашей же фразой:
Flat пишет:Это уж не вам решать.
Flat пишет:Флаг в руки: переходите на дб. Таких движков куча. Что же вы делаете здесь на форуме, который посвящён исключительно файловой версии? Многим, очень многим работа с дб просто не нужная головная боль, поэтому и применяют простые файловые движки, неужели не понятно?
А с чего вы это взяли? Работать с базами данных в чём-то даже удобнее, чем с файлами. Возьмите тот же phpMyAdmin. Работать с его графическим интерфейсом (где уже встроены инструменты для фильтрации и сортировки данных, где данные отображаются в виде наглядных таблиц, где создание резервных копий и восстановление из них доведены да автоматизма) будет уж точно лучше, чем колупаться в ваших файлах в текстовом редакторе, отыскивая разделители полей (ваши палочки - |) и подсчитывая по индексу, что означает то или иное поле. Другое дело БД, где все поля подписаны.
Flat пишет:Сюда однако заходят не 4 человека, а десятки посетителей за день, посмотрите статистику. И многие форумы на этом движке до сих пор живут и здравствуют.
4 человека, залётные гости и поисковые боты. Большинство форумов ExBB в Интернете заброшены и, либо ещё сами кое-как поддерживаются силами пользователей, либо уже сконвертировались на другие движки. Я знаю от силы штук 10 форумов на ExBB, которые состоялись (собрали более 10к сообщений), остались на ExBB и при этом на которых продолжают общаться люди. Остальное - полумёртвые и мёртвые висяки типа http://tvoyweb.ru/forums и т.п.
Flat пишет:И мне лично движок с базой не нужен, хотя я как программист-любитель и понимаю язык запросов и мне не сложно будет например перевести с одного хостинга на другой, чай, из детских штанишек уже вырос. Но вот как другим быть, которые не знают язык mysql? А таких много, а я знаю случаи, когда даже опытные в этом деле товарищи, которые держат свои форумы на mysql теряли половину своих данных из-за элементарных ошибок при конвертации и т.п вещей.. Мне такой геморр не нужен. А если вам нужен повторяю: флаг в руки переходите на phpbb или другой подобный движок.
Если бы вам нужен был форум, вы бы давно уже поставили его. Но вам нужен гемор видимо на самом деле, а не форум. И когда вообще для переноса базы данных нужно было знать язык SQL? Да на том же YouTube достаточно мануалов по переносу базы через phpMyAdmin за 4 клика!
Про потерю данных: не знаю ни одного случая, когда именно MySQL становился причиной потери. Относительно новое журналируемое хранилище InnoDB обеспечивает сохранность не хуже, чем те же файлы. Ну а если проблема будет в потере питания или повреждении накопителя, тот тут уж вам ничто не поможет, кроме резервных копий.
Но даже тут у MySQL преимущество. Если какая-то запись в момент пропадания питания не до конца допишется в файл, MySQL сможет автоматически либо восстановить запись из журнала, либо (если в журнале запись не сохранилась) откатить изменения. При этом база приводится в целостное рабочее состояние. С вашими же файлами, если питание пропадёт аккурат на работе fwrite (например), то файл окажется битым, и пока пользователь вручную не исправит его, нормальная работы с ним будет невозможна.
Flat пишет:Во первых, для работы с sqlite нужно работать через ООП-обёртки, так как sqlite-3 не поддерживается в процедурном стиле. Или через PDO драйвер, что тоже самое по сути. Но это так, инфо к размышлению. Просто дискриминировали процедурщиков.
Дискриминировали устаревших динозавров. PHP разрабатывают сотни человек, целое сообщество не самых глупых людей. В отличие от... И наверное есть причина, почему так сделали.
Flat пишет:Во-вторых, опять же в таком случае нужно создавать новый движок с нуля. Вопрос времени. В одиночку это сделать нужно минимум 2 года. У меня их нет.
Вы уже полгода, с мая месяца, тут мусолите сообщения, а на выходе у вас получается не лучше, чем уже было здесь 10 лет назад в ExBB. Может с вашей точки зрения названия у функций в вашем варианте красивее, и данные по файлам тоже лежат красивее, но людям всё равно. Открою вам секрет: обычные пользователи в файлы вообще не заглядывают. Они смотрят на функционал и оформление конечного продукта.
Flat пишет:Если делать свою реализацию, файлы с дб будут ещё нечитаемей чем нынешнии сериализированные, причём малейшее изменение файла может угробить всю базу. Поэтому файловая система намного надёжнее.
Даже в платных навороченных движках базы начинают сыпаться при определённом числе записей. Возможно что это баги в самом mysql, очём много писано. Даже в вобле форумы глючат не по детски. И зачем мне это нужно?
На вобле говорите? Бедный http://imho.ws, работает уже 15 лет и не парится, а вы тут страхи рассказываете...
Flat пишет:Я сейчас беру последнюю безоопную версию, и начинаю править код под то представление о нём, которое есть у меня. Старая ветка будет продолжена!
Ждите новую версию движка!
Эй, все слышали? Налетай-торопись! И как мы раньше жили без версии 10-летней с правками в представлении от Flat! Переименуем функции, слегка изменим файлы и тогда-то уж точно заживём! |
Sigurni |
Отправлено: 11 декабря 2018 — 18:14 • Тема: Размышлизмы о движке • Форум: О жизни |
Ответов: 64 Просмотров: 0
|
Flat пишет:Также заменил функции file() на собственную реализацию. Оказывается она не использует разделяемую блокировку. Теперь всё ok
Вы решили ровно половину задачи. При работе с записью нужно использовать не разделяемую, а исключительную блокировку. И да, даже когда читаете из файла. Иначе описанные мной в предыдущем сообщении случаи всё равно будут случаться в ваших изобретаемых велосипедах функциях, и будете получать обнуление. Ещё раз внимательно смотрите includes/fm.class.php, методы FM::_Read2Write() и FM::_Write(). За вас всё уже придумано.
Flat пишет:Дык и данная версия небезопасна ибо много уже исправленных проблем просто не вошло в дистрибутив. Однако та версия была гораздо проще, код яснее, почему бы ещё тгда не исправить несколько ошибок? По всей видимости кое-кто решил срубить бабок на этом деле.. Ну, ну..
Аргументируйте, что тут небезопасно. За 10 лет работы нового ядра (ООПнутого, как вы выражаетесь) не было ни одного обнуления и серьёзного взлома. На старых версиях такое происходило регулярно. Код был яснее? Да ну, в чём принципиальное отличие, кроме того, что были изменены файловые функции и местами переименованы другие файлы/функции? Вы говорите ООП? Так там нет по сути никакого ООП. Всего несколько системных классов, которые на самом деле работают как пекеджи/неймспейсы для функций, а не полноценные объектные сущности. Про "бабки" вообще смешно читать. Вам надо не функции, а комедийные детективы писать.
1Bot пишет:У Вас тоже кода с прямым доступом к файлам до сих пор нет.
Современные СУБД шагнули уже далеко вперёд. Возьмите тот же MySQL, новые решения на его базе (MariaDB/Percona Server) показывают прекрасную производительность для задач форума. А если задействовать кеширующие решения типа memcached, а может и что по-мощнее... Ещё в далеком 2011 году появился инструмент для хранения различных структур данных в самой ОЗУ. А для безопасности данных (на случай пропажи питания) используется журналирование в файл отдельным потоком. Но.. 4-ём оставшимся здесь пользователям видите ли нужны велосипеды и файлы, потому что кто-то провёл серьёзное маркетинговое исследование и пришёл к выводу "однозначно будет востребовано"
Flat пишет:У меня были варианты такого кода. много экспериментировал. Но всё это настолько сложно, что легче, гораздо легче просто использовать sqlite.
Вот была же хорошая мысль, но...
Flat пишет:А мне бы не хотелось именно в данном движке что-то кардинально менять. Сейчас уже многие движки работают с sqlite. А лучше мы всё равно не сделаем. sqlite классная штука, те кто в курсе.
Файловый движок тем и уникален, что работает на файлах, и занимает свою нишу. От этого уходить нельзя, поэтому я и прекратил заниматься фи..ёй..
...но надо в одиночку сесть и пытаться переизобрести то, над чем уже поработали сотни людей до этого. Какая ниша сейчас есть у файлового форума? Те 4 человека, что остались здесь? |
Sigurni |
Отправлено: 6 декабря 2018 — 10:41 • Тема: Размышлизмы о движке • Форум: О жизни |
Ответов: 64 Просмотров: 0
|
Flat пишет:Исключена возможность обнуления файлов при отключении например питания сервера.
Да ну? Я могу вам сходу привести как минимум 2 примера, когда у вас произойдёт повреждение файла при одновременном доступе, и даже без "отключения питания сервера" (очень повеселила эта фраза).
- Пользователь A читает массив (вызывается функция sibb_getArr) и решает его обновить (вызовом sibb_saveArr). В этот момент (аккурат до вызова flock) приходит пользователь B и начинает читать массив, чтобы опять же его обновить. Т.к. изменения, внесённые пользователем A, находятся ещё только в ОЗУ, пользователь B получает старые данные (без учёта изменений пользователя A). В результате мы получаем состояние гонки процессов, и изменения того пользователя, процесс которого первым выполнит fwrite, будут безвозвратно утеряны.
- Пользователь A открывает тему (вызывается функция sibb_getTab) и добавляет в неё сообщение (вызывается функция sibb_saveTab). В этот момент, пока процесс пользователя A работает с tmp-файлом, приходит Пользователь B, чтобы тоже добавить сообщение. Его процесс ничего не знает про то, что процессом пользователя A создан tmp-файл, уже с новым сообщением, и читает старый файл (не tmp), где этого сообщения нет. Тем временем процесс пользователя A закончил работу с tmp-файлом и вызывает rename. Тоже самое спустя некоторое время сделает процесс пользователя B. В результате, сообщение пользователя A будет утеряно.
Дальше смотреть нет смысла. Ваши "файловые функции" - это ярчайший пример того, как делать НЕ нужно. Не нужно изобретать велосипед и пытаться написать на скриптовом языке то, для чего он не предназначен. PHP не предназначен для написания СУБД. Даже текущая версия ExBB, пусть и файловая, хотя бы работает на базе встроенных функций serialize/unserialize, которые, будучи написаны на C, работают на порядок быстрее даже самых оптимизированных PHP-аналогов, если мы говорим о файлах последовательного доступа (а у вас, судя по коду, они именно такие). И функционал, которые эти функции предоставляют, на порядок выше того, что у вас. В частности, можно сохранять ключи, многомерные массивы. А с вашими функциями, где фигурируют числовые ключи, работать будет крайне неудобно, вы сами это поймёте, когда перейдёте от ядра к функционалу.
Flat пишет:Я вообще считаю, что добавление ООП в ПХП было серьёзной ошибкой.
Да что вы говорите! Вы считаете несколько легковесных дополнительных операций (да и то на C), как накладных расходов от ООП в PHP, серьёзной ошибкой, и при этом замахиваетесь на написание собственной СУБД на этом языке, которой предстоит обрабатывать объёмные файлы? Имхо, вместо того, чтобы быть велосипедистом, стоит просто подучить ООП (а не отрицать его) и работу с полноценными СУБД, в том числе NoSQL. А эти функции лучше забудьте и не тратьте на это время, это полная дичь. |
|
Страниц (1): [1]
|