Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как сделать tempmute или мут на некоторое время?

Лучший ответ:
Это плохой вариант использования, но без лишних затрат.
Если бот будет перезагружен, во время того как у человека висит "мут". То он с ним навсегда и останется.
@client.command(pass_context=True)
@commands.has_any_role(860824791610032189, 876086379665301534)

async def mute( ctx, member: discord.Member, time: int):
    emb = discord.Embed(title="Участник Был Замучен!", colour=discord.Color.blue())
    await ctx.channel.purge(limit=1)

    emb.set_author(name=member.name, icon_url=member.avatar_url )
    emb.set_footer(text="Его замутил {}".format(ctx.author.name ), icon_url=ctx.author.avatar_url )
    
    await ctx.send(embed=emb)
    muted_role = discord.utils.get(ctx.message.guild.roles, name="Muted")
    await member.add_roles(muted_role)
    
    # Спим X секунд, перед тем как снять роль.
    await asyncio.sleep(time) 
    # Снимаем роль замученного.
    await member.remove_roles(muted_role)

Худший ответ:
Вот вам большой, но сам лучший код на мут со временем как в Mee6

https://pastebin.com/Q7NNj46e #Просто слишком много слов!
Вопрос: Каким образом организовать сервер в офисе?

Лучший ответ:
Нанять ИТ-специалиста.

Худший ответ:
Не слушать мамкиных хакеров. 
1.  Windows server очень надежная система
2. Поставить на границу cisco isr или asa 
3. закрыть  порты кроме 443 и 22
4. DMZ  настроить  по гайдам cisco
Вопрос: Объясните за создание своих nameservers?

Лучший ответ:
1.

Использование "именных" ns либо сами поддерживаете в Bind, либо это дополнительная (обычно платная) услуга у dns-хостеров

2.

Мало того что нужно два IP, надо чтобы располагались на двух разных физических серверах с Bind-ом, если сами это огрганизовываете. Если пользуетесь услугами dns-хостера там итак разные IP будут.

3.

Да у хостера где размещаете сайт раздел DNS бесполезен. Так как Вы у регистратора делегируете не на его ns .

4.

У регистратора прописываете ТОЛЬКО ns, никаких А записей прописывать не надо.

Худший ответ:
2. Можно ли использовать один и тот же IP для обоих NS?
У некоторых регистраторов можно. Я в 2domains вроде делал для RU домена.
Вопрос: Где изучать React.js?

Лучший ответ:
Посмотри на youtube Владилен Минин и Ulbi TV - у них есть уроки по Реакту в очень доступной форме
А так, больше пиши руками, активно гугли "тупики" и выучить получится быстрее

Худший ответ:
https://www.youtube.com/watch?v=euYBnQ5MbLM&list=P... лучшее, что я нашел, тоже недавно реакт учу
это единственный курс, где ты прям много фишек найдешь+поймешь как все работает и что главное, этот курс актуален в 2022 и там есть еще и редакс
Вопрос: При переносе сайта пропали картинки. Сайт написан на WordPress. Какие могут быть варианты решения?

Лучший ответ:
В базе данных, таблица options поменяйте URL

Худший ответ:
Смена домена. Через PHPmyAdmin запускаем SQL (меняем URL на свои):

UPDATE wp_options SET option_value = replace(option_value, 'http://domain.ru', 'http://newdomain.ru') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'http://domain.ru','http://newdomain.ru');
UPDATE wp_posts SET post_content = replace(post_content, 'http://domain.ru', 'http://newdomain.ru');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://domain.ru','http://newdomain.ru');

По поводу главной и других страниц:

Нужно зайти в "Настройки" в Админке, потом "Постоянные ссылки" и просто нажать "Сохранить изменения".
Вопрос: Как качественно создать качественную обложку для инди игры на пк?

Лучший ответ:
Вам на фриланс. И никак иначе.

Худший ответ:
Ребят, прочитал вопрос. Вам бы дизайнера и художника в команду, без них нынче никак:) Скорее всего, там им есть над чем потрудиться помимо обложки, если вы хотите добиться успеха.
Вопрос: Какие исключения нужны в KSWS для работы с Oracle?

Лучший ответ:
Популярная практика одна: базы данных и антивируса на одном сервере быть не должно.
И кстати, если у вас есть потребность в антивирусе, то это значит, что кроме Oracle на сервере есть еще какие-то функции. Это неправильно.

Худший ответ:
Распределить нагрузки на несколько серверов
или
Отключить ненужный на серваке антивирь, тем более для БД. Отдельный сервак под неё, закрыть все доступы и всё
Вопрос: Как создать психологический тест на телеграм боте?

Лучший ответ:
На самом деле для создания квизов(последовательных вопросов-ответов) вам необходимо использовать конечные автоматы. В вашей библиотеке реализуется так: Пример из офф. документации.

Худший ответ:
Ну начнем с того, что вы не указали библиотеку, но можно понять что у вас PyTelegramBotAPI по bot.register_next_step_handler и общей сложности вопроса.

Думаю, может вы всерьез про оператор сравнения не слышали.

def lala(message):
    if kolvoLet == 0: # На самом деле, можно и не делать, если возраст не привязан к ответам, просто в вопросе было 0 лет
        if chtoTamUTebya == 'любишь играть':
            pass # Здесь соответственно на «любишь играть»
        elif chtoTamUTebya == 'любишь петь':
            pass # Здесь соответственно на «любишь петь»
        # И попер так дальше по всем вариантам.
Вопрос: Как привязать ключи в таблицах баз данных?

Лучший ответ:
Значение code необходимо задавать явно для каждой записи в trace или использовать тип SERIAL. Это поле не может быть null, так как является первичным ключом.
Ну и не заданы отношения FOREIGN KEY.

Худший ответ:
Я бы предложил следующую структуру таблиц:
CREATE TABLE employees (
	id SERIAL PRIMARY KEY,
	manager_id INT REFERENCES employees(id),
	full_name VARCHAR,
	address VARCHAR,
	phone VARCHAR,
	hired_at TIMESTAMP,
	fired_at TIMESTAMP
);

CREATE TABLE order_states (
	id SERIAL PRIMARY KEY,
	state VARCHAR
);

CREATE TABLE orders (
	id SERIAL PRIMARY KEY,
	customer VARCHAR,
	address VARCHAR,
	courier_id INT REFERENCES employees(id),
	price NUMERIC
);

CREATE TABLE trace (
	id BIGSERIAL PRIMARY KEY,
	state_id INT REFERENCES order_states(id),
	order_id INT REFERENCES orders(id),
	updated_at TIMESTAMP
);

CREATE INDEX idx_employees_manager_id ON employees(manager_id);

CREATE INDEX idx_orders_courier_id ON orders(courier_id);

CREATE INDEX idx_trace_state_id_order_id ON trace(state_id, order_id);
SQLize online
Вопрос: Какие лучшие практики запуска postgresql в продакшн?

Лучший ответ:
Лучшие практики, это что наружу смотрит API которое и обрабатывает поступающие запросы. Никто в здравом уме не выставляет базу на мороз.

Худший ответ:
Лучшие практики - не высовывать инфраструктуру в интернет, открывая доступы по необходимости на сетевых железках. То же самое - между локальными вланами.
Вопрос: Как показать свой сайт другому юзеру?

Лучший ответ:
Возможно без деплоя, есть такая штука ngrok 
Проксирует запросы на локальный порт, в том числе за натом.
Не нужны никакие домены, главное чтобы у тебя на локалхосте запускался сервис который хочешь пробросить
Запускается очень просто, для домашнего применения есть бесплатный тарифный план.



Худший ответ:
Для этого тебе надо иметь выделенный домен и желательно запустить сайт в докер контейнере.
Подробнее о создании своего домашнего сервера читай тут:Как создать сервер на пк?
Вопрос: В чём разница между ключевыми словами «запрос спб» и «запрос в спб»?

Лучший ответ:
Да под все
Все и развивать

Худший ответ:
Яндекс уже давно умеет выдавать по синонимам. 
Вбей "проститутки Мск". Вся первая страница без упоминания слова "Мск", но с упоминанием "Москвы". 
Потому предпочтительно оптимизировать под основной запрос. Синонимы опционально, но не обязательно.
Вопрос: Компилирование из исходников pgadmin 4?

Лучший ответ:
На таком проекте? 
Обкатка понимания "как происходит сборка программы из исходников" обычно делается на минимальном проекте, где точно не возникнет ошибок.
Потому что вариантов по сборке несколько (и то - основных, а на самом деле - бесконечность):
- заранее настроенный make. Наихудший вариант, который предполагает расположение каталогов только так, как у автора. Впрочем, Makefile можно поправить - если потратить время и знать как
- configure. Вариант получше. Скрипт проверяет систему и более-менее под нее адаптируется, потом формирует Makefile
- autotools (autoconf, automake, libtool) - суперсет над configure, который его создает. Больше гибкости, больше проверок
- cmake - очень часто используемая замена autotools. Еще больше проверок, еще больше гибкости

Худший ответ:
Вы выбрали худший вариант графической морды к постгресу :) Подумайте, не совершайте ошибку.
Вопрос: Как сжать видео так, чтобы надписи были в идеальном качестве, а остальная картинка в нормальном?

Лучший ответ:
кодеки жмут блоками.. Это придётся динамически выделять в кадрах области с номерами и жать блоки, на которые они попали с одними параметрами, а прочие – с другими. Не знаю, есть ли такие кодеки..

Может, лучше распознать номера и присутствующие в кадре прописать в трек субтитров? 
После этого видео можно будет как угодно уменьшить-ужать-размылить, а распознанные номера будут видны, если включить субтитры.

Усложнив, можно в другой трек субтитров прописать и распознанные положения областей с номерами, а каким-то доработанным видеоплеером отрисовывать эти прямоугольники поверх видео при воспроизведении.

Худший ответ:
никак. это одна картинка.
просто подбирайте степень сжатия кодека, их там много
Вопрос: Как отключить задания google в планировщике задач?

Лучший ответ:
Через powershell легче всего
#Получение информации и запуск заданий планировщика из PowerShell
Get-ScheduledTask -TaskPath "\" | ? state -ne Disabled
#Получение подробной информации о конкретном задании
Get-ScheduledTask CheckServiceState_PS| Get-ScheduledTaskInfo
#Отключить задание
Get-ScheduledTask CheckServiceState_PS | Disable-ScheduledTask
#Включить задание
Get-ScheduledTask CheckServiceState_PS | Enable-ScheduledTask
#Удалить задание(я):
Unregister-ScheduledTask -TaskName "OneDrive*"

А массово можно уже удаленно, написав батник например, политикой на домен или чем удобнее.

Худший ответ:
Они идут я так понял для каждого пк со своим кодом (onedrive Standate Task-S-1-5-21-3362628...) и у каждого ПК свой код и они не дублируются.
schtasks /query /fo list | find "OneDrive"
Само собой от имени администратора.
А дальше очевидно - FOR /F и SCHTASKS /Delete.
Вопрос: Как сделать эти пробелы между кнопкой и рамкой, и аналогично у иконки?

Лучший ответ:
белый фон и отступ блоку или белый бордер блоку.

Худший ответ:
padding у блока который с рамкой
Вопрос: Как вырасти до системного администратора?

Лучший ответ:
Смотрите на хедхантере требования на вакансии, ищите вопросы для собеседования сисадминов.  Усваиваете, осваиваете, значительную часть начальных сисадминских навыков можно отработать на домашнем стенде. Там примерно три пути есть, Linux, Windows и сети - выбираете, что больше нравится, и делаете на этом акцент. 

Первое время всё равно придётся поработать эникейщиком, главное - не застрять на этом.

Худший ответ:
а я хочу понять и научится на практикену вот тут в вопросе и заключается ответ - надо идти практиковаться. То бишь устроится на работу, и быть готовым 24/7 работать (т.к. когда что-то сломается, вы будете сидеть и разбираться, пока не почините, и это легко может быть и ночью, и в выходные).
Вопрос: Как открывать ссылки пакетами?

Лучший ответ:
Может есть вариант открывать например по 10 ссылок с интервалом 3 сек?
setInterval()
https://developer.mozilla.org/en-US/docs/Web/API/s...

Худший ответ:
В твиге сначала собрать все ссылки в один JS массив. Тогда в вопросе покажем реальное общее количество ссылок, а не хардкодед "100".

Можно просто зарядить таймауты с пачками ссылок: function LINKNAME() {
  const urls = [];
  {% if products %}
    {% for product in products %}
      {% for actione in product.actione %}
        {% if actione.url %}
          urls.push('{{ actione.url }}');
        {% endif %}
      {% endfor %}
    {% endfor %}
  {% endif %}

  const isOkay = confirm(`Открыть ${urls.length} вкладок?`);
  if (!isOkay){
    alert('Сообщение при отмене');
    return;
  }
  // открываем
  const batchSize = 5; // по сколько за 1 раз одновременно открывать
  const pause = 3; // пауза в секундах между пачками
  let iteration = 0;

  while (urls.length) {
    const batch = urls.splice(0, batchSize);
    setTimeout(() => batch.forEach(url => window.open(url)), iteration * pause * 1000);
    iteration++;
  }
}А то можно бы с генератором..
Вопрос: Сложно сформулировать вопрос кратко. Поможете начинающему?

Лучший ответ:
pas = input('Придумайте пароль:')
if any(map(str.isdigit, pas)):
     print('Пароль не должен содержать цифры')
else:
    print('Пароль подходит')

Худший ответ:
a= ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
pas = input('Придумайте пароль:')
for i in a:
if i in pas:
print ('Пароль не должен содержать цифры')
break
else:
print ('Пароль подходит')
Вопрос: Как соединить базу данных с сайтом?

Лучший ответ:
https://www.phpmyadmin.net/

Вот только, не забудте прикрыть сие от публичного пространства.

Худший ответ:
почему бы не изучить языки программирования прежде чем создавать приложения?

я сам не программист - помогите мне написать программу, а то у меня лапки...
Вопрос: Как обрезать json до определённого тега?

Лучший ответ:
Я бы посоветовал превратить JSON в структуру и с ней производить все преобразования. На выходе снова превратить в JSON

Худший ответ:
Есть строка джсона длинной 25000+ строк.
Это какая-то ерунда. JSON - это никакая не стркоа. Это JavaScript object notation. Собственно это заложено в аббревиатуру. И работать с ним надо через API который работает с JSON. 

Игры со строками ни к чему хорошему не приведут. Пропустишь escaping и будет просто зря потраченное время и забаговнный код.
Вопрос: Зачем нужна рекурсия в реальных случаях?

Лучший ответ:
Рекурсия нужна при обработке иерархических данных. Например - обойти файлы и каталоги 
в файловой системе и выполнить какое-то действие. Или действие с условием. Например если
в текущем фолдере есть фолдер .git - то выполнить какой-то git script.

Рекурсия может понадобиться при работе с документами XML/JSon (шаблон composer). И хотя
в некоторых API рекурсия может быть частично скрыта за языками XPath/JSonPath тем не меннее
ее рекурсивная природа остается налицо. Кроме того если вам достался узкий API типа DomDocument
без поисковых диалектов - то обойти его можно на любом ЯП с рекурсивной функцией.

Рекурсия нужна при парсинге сайтов. Это вобщем просто более расширенная трактовка работы с файловой 
системой. Если Url-s это как-бы файлы в web пространстве и они имеют ссылки друг на друга - то вы 
можете рекурсией это все обходить.

Рекурсия почти всегда нужна при работе с графами. Берите любой алгорим на теорию графов и я готов
спорить что 99% он будет содержать рекурсию.

Все настольные игры (шахматы-шашки) в основе своего алгоритма альфа-бета поиска с отсечениями и
BWF базируются на рекурсии.

Худший ответ:
Реальный проект парсинг любого магазина по вложенным категориям. 
Вы допустим предположите что разумная глубина 6 уровней, а этот маньяк что уровней должно быть 14
Вопрос: Есть ли отличия в предустановленной windows на ноутбуке от той которую установлю?

Лучший ответ:
Все интересные фишки всегда можете скачать и установить самостоятельно с официального сайта. В предустановке будет куча рекламного хлама вроде триальных версий ворда, какого-нибудь антивируса и ещё нескоьких богом забытых бесполезных программ, а также куча телеметрии от производителя и бесполезных автообновляторов этих самых богом забытых программ. Скорее всего ещё будет брендирование винды на уровне предустановленных тем, изменённого экрана загрузки и логотипа в информации о пк. Ну и с вероятностью 99% у вас будет с завода хоум, а не про.

Худший ответ:
да просто купить бук с виндой гораздо дешевле, чем тот же бук + винда отдельно, стоимость винды ниже в разы получается.
если у вас уже есть коробка с виндой, или ставите пиратку - пофиг, берите без системы, немножко сэкономите
Вопрос: SSD для SATA 3 или SATA 2?

Лучший ответ:
Абсолютно никакой разницы, даже синтетические тесты не дадут заметных отличий

p.s. тесты дадут разницу на линейном чтении, sata2 не больше ~300мегабайт/секунду (3gigabit/s) sata3  дают скорость до 600мб/с (6Gb/s), некоторые ssd даже дешевые могут давать чтение до 400мбайт/с

но обывателю это абсолютно без разницы

Худший ответ:
Системный в SATA3, файловый в SATA2 - всетаки к системному вы чаще обращаетесь и он по любому более загружен чем D
Вопрос: Как спроектировать систему подписок на сайте?

Лучший ответ:
одна таблица subscribes с вот такой структурой:

subscribe_id
subscribe_author_id
subscribe_object_id

и, разумеется, выкинуть счетчики из таблицы users
больше ничего не нужно
для остального учить базовый SQL. Все подписки пользователя удаляются одним запросом. Все подписчики - тоже.

Если оставить в стороне нелепые вопросы "а для запроса на удаление тыщи записей какой-то другой SQL нужен?", и вернуться проектированию подписок, то, как правильно подсказывает Slava Rozhnev, 

Во-первых, в таблицу подписок необходимо добавить два составных индекса, 
subscribe_author_id, subscribe_object_id
subscribe_object_id, subscribe_author_id
и тогда ужасный запрос count(*) перестанет быть ночным кошмаром, а будет выполняться мгновенно

А во-вторых, в неё можно добавить внешние ключи, которые будут ссылаться на таблицу users, с опцией каскадного удаления. Тогда отдельный запрос на удаление подписок и вовсе не придётся писать руками, достаточно будет удалить только юзера.

Запроса на удаление бояться не надо. Этот запрос всего лишь пометит нужные записи, как удалённые, никто файл на диске укорачивать не будет. Потом база данных использует эти же самые ячейки для других подписок.

Худший ответ:
Второй вариант, без префиксов subscribe_ итак понятно, что от subscribers. И связь полиморфную, чтобы подписываться на кучу объектов с одним функционалом через трейт модели. для соцсетей актуально. В дальнейшем можно оптимизировать коунтерами итд
Вопрос: Будет ли недоступность сайта при смене DNS-серверов?

Лучший ответ:
Нет, не будет если Вы не удалите зону со всеми записями со "старого" dns-хостинга, пока ns-сервера "нового" dns-хостинга (куда Вы зону скопировали) кэшируются везде.

Худший ответ:
Да будет. ЗАвсит от скорости обновления DNS у серверов
Вопрос: Как зайти на сайт с одного компьютера но под разными аккаунтами одновременно?

Лучший ответ:
Режим инкогнито, разные браузеры, несколько акк в хроме

Худший ответ:
Разные профили, в linux firefox у меня запускался без проблем, в windows что то мешало, но если создать разных пользователей windows и запускать используя фичу run as (контекстное меню с shift на ярлыке), также добавить ключ командной строки --no-remote чтобы не реагировали на открытие ссылок по умолчанию из приложений
Вопрос: Где могут оставаться следы киберпреступлений?

Лучший ответ:
В любых. Зависит от особенностей ПК, его софта, метода использования, самих киберпреступлений и еще кучи других факторов.

Худший ответ:
В любых. Зависит от особенностей ПК, его софта, метода использования, самих киберпреступлений и еще кучи других факторов.
Вопрос: Что делать, если при попытке создать переменную в Java выводит ошибку?

Лучший ответ:
Это не ошибка, а предупреждение.

Ошибки IDE как правило подчеркивает красным, предупреждения - желтым (по крайней мере в IDEA это так, скриншот похож на IDEA, но я не уверен).

Собственно текст предупреждения и говорит о том что переменная нигде не используется.

Предупреждение не оказывает никакого влияния на компиляцию и работу программы, единственное его предназначение - обратить внимание программиста  на этот фрагмент кода, в котором он, возможно, допустил ошибку (забыл использовать переменную в нужном месте или забыл удалить более ненужную переменную).

Предупреждение исчезнет когда вы допишете фрагмент.

Худший ответ:
опять же извините за глупые вопросы , я просто начинающий в джаве
в первую очередь нужно научиться читать ошибки
Вопрос: Что нужно знать из матана и линейной алгебры для изучения Data Science?

Лучший ответ:
Закончил первый курс универа
Теперь надо ещё четыре курса закончить. Это для начала.

Худший ответ:
Чем больше, тем лучше, но углубляться слишком не нужно. 
Сочетайте всё с практикой и тогда сами начнёте понимать какие разделы вам стоит подучить, а на какие пока можно забить.
Вопрос: Как быстро освоить Bootstrap 5?

Лучший ответ:
Там весьма внятная дока, ничего особенного прям учить не нужно, читаешь, запоминаешь, делаешь, что забыл - смотришь в доке.

Худший ответ:
Набейте html структуру, а дальше ищите в документации разные классы и вешайте их на селекторы. Что бы они стали похожи на то, что вы ожидаете увидеть. Например классы карточек, теней, отступов. 

На самом деле, я понимаю о чём Вы, но тут сложно что либо советовать, потому что BS хорошо учится, когда ты уже знаешь вёрстку, и что бы сэкономить время, используешь заготовленные классы BS. Для этого он и был создан. Что бы ускорить работу.

Кажется, у Иван Петриченко, были курсы по вёрстке, куда входил BS 3-4.
По вёрстке, неплохие курсы HTML Academy от 2018 года.
На ютубе, полно курсов, просто вбейте Bootstrap 5. А с автопереводом звуковой дорожки в яндекс браузере, можно смотреть и англоязычные источники. 

Могу сказать точно, что тут сложно срезать углы. Хорошая основа в вёрстке, поможет легко работать с любыми css фреймворками, препроцессорами и т.д.
Вопрос: Нужно ли бекендеру знания основ JS и Фронт фрейм?

Лучший ответ:
Не обязательно, но полезно.

Худший ответ:
Ангуляр пока лишнее.

Jquery по верхам будет полезно, чтобы ajax запросы из браузера на API посылать.
С другой стороны, если книга исключительно про серверную часть, то тогда можно и не заморачиваться и обойтись Postman.
Вопрос: Как устроены dns сервера?

Лучший ответ:
Не касаясь DNS, а вообще.
За одним IP-адресом может скрываться целая фабрика серверов, иногда сотни штук.
Приблизительный пример  - маскарадинг IP-адресом на роутерах и умных коммутаторах в сетях провайдеров, фирмах, и даже квартирах. Практически любой домашний роутер может маскарадить IP-адреса. Если сюда добавить распределение и балансировку нагрузки, и кеширование запросов (уже касательно DNS) на промежуточных серверах, то вполне можно жить в такой распределенной системе.

Худший ответ:
"...какая бы не была мощная одна нода, но она не способна обработать такое количество запросов в секунду..."
Для этого есть кэш, кэширует запросы ОС, роутер, провайдеровский DNS и так далее. Вроде так
Вопрос: Как ввести ESXi в гибернацию?

Лучший ответ:
Гипервизор не должен отключаться впринципе.
Для автовключения, после возврата питания, в БИОС есть настройка автовключения

Худший ответ:
Проверьте настройки в BIOS. У меня самосбор с ESXi 6.0 так и работал - выключался через веб-морду, включался по wol с микторика.
Вопрос: Какие лучшие курсы java 2021?

Лучший ответ:
Так же как и в 2020-м - сплошное инфоцыганство и зачитывание учебника с выражением.

Худший ответ:
все курсы по книгам идут, на курсах это никто не скрывает. Можно конечно платить, за то что есть в свободном доступе, но перед этим подумай точно ли тебе это нужно? Таких преподов чтобы прям заинтересовывали материалом я не видел, остальное есть в книгах
Вопрос: Как принимать только актуальных данные по API в PHP без базы?

Лучший ответ:
где то хранить что куда уже отправлял придется, можно не заводить идентификаторы, а считать хеш от ключевых параметров, по которым определяешь уникальность (заголовок или все содержимое), этот хеш и бери и храни как идентификатор.

тебе нужна key-value база данных, если данных мало и они влезают в память массивом $index[$hash]=true то тогда храни в файле в сериализованном виде var_export/serialize/json_encode или даже по 1 строке на запись - читать array_flip(file('имя файла'))

p.s. бери sqlite, на столько простой удобной и неприхотливой базы данных не найти, реализованна в файле, ничего не требует для администрирования, работает везде...

Худший ответ:
Сэмулировать бд например каким-либо файлом. Туда записывать сериализованные данные.