Алексей Ярков, сайт долгое время не обновляется, есть все статьи в текстовом формате (файлы txt). Сайт, можно сказать, одностраничный - просто переключаются статьи. Разметку и стили написать не проблема. По факту, нужно только меню с разделами и статьи со внутренними ссылками.
Относительно идеи с разделами есть сомнения - где-то читал жалобы на скорость работы при большом количестве разделов. Спасибо за ссылку на статью. Думаю, в случае со статическими данными, как у меня, лучше подойдёт ответ выше - там есть дублирование данных, но все данные получаются без рекурсии, быстрыми запросами.
Adamos, вчера уже плохо воспринимал информацию и почему-то подумал, что вы предлагаете хранить список нижестоящих. В этом случае без рекурсии при добавлении не обойтись. А при хранении вышестоящих новый пользователь получит ID пригласившего + список вышестоящих пригласившего - рекурсий не будет. Имеет место дублирование данных, но при относительно небольшом количестве пользователей это не должно стать проблемой. Во всяком случае, таким образом мы избежим рекурсий при получении данных.
Но остаётся один вопрос - если мы получаем список нижестоящих по "LIKE '%#13000#%'", то как мы можем понять уровень каждого полученного элемента относительно текущего? Это тоже важная часть задачи.
P.S. Для каждого полученного пользователя на уровне PHP разбить список вышестоящих на массив по "#" - и индекс элемента, в котором находится ID текущего пользователя - и будет его уровнем. В зависимости от порядка хранения пользователей, возможно, придётся обратить массив.
Нет, так не годится, потому что при таком подходе потребуется при добавлении каждого нового пользователя обновлять это поле у всех элементов дерева. А их может быть много.
> что вы хотите от этих данных,
Чисто от них - иметь возможность получить список:
1. Всех пригласивших выше меня.
2. Всех приглашённых мною и далее (как в примере в тексте вопроса).
По сути, только эти две функции и требуются. Но и процесс добавления элемента в дерево тоже должен быть простым.
Владислав Лысков, Сергей delphinpro, друзья, всё работало на pm2 - я остановил работающий процесс, оставалось только написать "pm2 start ..." - но запускаться заново он не захотел. Может быть, в настройках Nginx я что-то не предусмотрел. Любая подсказка пригодится.
Я написал в вопросе, что всё работало на pm2, и перестало работать. Также, написал, что через "php artisan serve" сайт запускается и никаких ошибок PHP там нет. Из глобальных изменений могу вспомнить только то, что удалял Apache и настраивал Nginx - может быть, в настройках Nginx что-то не доглядел... Опять же, всё, ведь, работало и на Nginx.
Дмитрий, такая же ошибка 502 возникает, если остановить процессы в pm2 и попытаться открыть сайт. У меня оба приложения - и Nuxt, и Laravel, запущены через pm2. Я подумал, что возможно, pm2 "отваливается" из-за нагрузки - у него стоит "autorestart", и это вполне может привести к такому результату. Я отключил "autorestart", чтобы проверить, так ли это, но сервер "внезапно" стал работать безошибочно - у меня теперь скорее возникает "Too many requests" в Laravel, чем 502. Хотя, меня это случайное поведение сервера смущает. Будем тестировать - если что, я ещё вернусь.
Дмитрий, отключил Apache и перенёс всё на Nginx - визуально, вроде, стало лучше, (реже пропадают данные в публичной части). Но если пару раз обновить страницу (причём, не важен временной интервал между обновлениями), некоторые картинки пропадают. Если несколько раз подряд обновить главную страницу Laravel (api) - появляется похожая ошибка: 502 Bad Gateway. В логах (var/log/nginx) тоже ничего нет. Такое ощущение, что запросы блокируются в какой-то момент именно при загрузке страницы (в публичной части).