Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Так а теперь ты прочти мои предыдущие сообщения.
Хотя давай я лучше сделаю тебе краткий пересказ основного: не лучше ли напрячь обработкой данных базу данных, которая работает в отдельном запросе, позволив серверу заниматься своими делами, нежели каждый божий раз напрягать сервер? И хочу напомнить, что запись логов происходит довольно часто. И те самые 0.002 миллисекунды в перспективе дают приличный такой застой. И у тебя есть вариант, который избавит от этого застоя, но ты от него отказываешься просто потому что. Не кажется это нелогичным?
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Подожди, а при чем здесь мультипоточность? Все и так будет выполняться в том потоке, в каком ты указал.
Ты, видимо, не понимаешь, что я хочу до тебя донести. Запросы будут идти все равно в отдельном потоке, а вставка в БД будет выполняться согласно типу лога, какой указывается из static.
Пример:
В итоге все выглядит как: игрок 2 передал игроку один 5к баков. Сортировка идет согласно LOG_TYPE. Так при чем здесь мультипоточность?PHP код:
const LOG_TYPE_MONEY 1;
INSERT INTO `logs` ( `owner_id`, `sender_id`, `type`, `count` ) VALUES ( '1', '2', 'LOG_TYPE_MONEY', '5000' )
Во-первых, хранить тип лога в виде текста для каждой строки - крайне сомнительное удовольствие как по части памяти (вместо 1 символа будет записываться 10), так и по части выборки данных из такой таблицы (ты думаешь, просто так люди придумали создавать столбец, который будет хранить номер строки в виде числа, по которому происходит большинство обращений к строкам? Сравнить 2 числа гораздо проще и быстрее, нежели 2 строки).
Во-вторых, даже если ты обозначил так вставку содержимого константы в строку (непонятно, правда, зачем ты тогда выделил число апострофами), всё ещё стоит вопрос о том, что гораздо проще запомнить: текст капсом, что написан на английском или текст на русском?
Смотри как можно сделать проще и удобнее:
И использование:PHP код:
stock WriteLogByTypeName(type_name[], account_id, log_message[])
{
static
string[159+11+MAX_LOG_MESSAGE+MAX_LOG_TYPE+1];
string[0] = '\0';
format(string, sizeof(string),
"\
INSERT INTO log_system (account_id, log_type_id, log_message, log_data) \
SELECT %d, lt.log_type_id, '%s', NOW() FROM log_type_list as lt WHERE lt.log_type_name = '%s'\
",
account_id,
log_message,
type_name);
mysql_tquery(MySQL:handle, string, "", "");
return 1;
}
И не нужно запоминать никаких LOG_TYPE_MONEY и прочего треша. Привычные слова, которые отражают суть, гораздо проще держать в памяти, нежели имена констант.PHP код:
WriteLogByTypeName("Продажа авто", pInfo[playerid][pAccountID], "На руках было 100$, а стало 100100$");
Реализуй ты всё то же самое без второй таблицы, тебе придётся запускать цикл и сверять значение "type_name" со значением строк из массива, который ты создашь перед этим
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Это был пример, а не кусок готового кода. Да, я записываю не текст, а 1 в тип лога.
Если ты используешь ( OMG ), русский текст для определения типа лога, то ты, явно, не имел дела с нормальными системами логирования.
INSERT and SELECT в данной системе сразу? Оо.
Этого достаточно, чтобы понять, что ты не сталкивался и придумываешь бред на ходу. Больше даже отвечать не хочу.
Алло, гараж, в таблицу с логами названия типов этих самых логов не попадают. Мне всё больше начинает казаться, что ты крайне слаб в SQL и не понимаешь о чём говоришь.
Вот так будет выглядеть результат
Вот этого запроса:
То бишь, запрос сам определит ID типа и подставит егоPHP код:
INSERT INTO log_system (account_id, log_type_id, log_message, log_data) SELECT 5, lt.log_type_id, 'Текст логов', NOW() FROM log_type_list as lt WHERE lt.log_type_name = 'Продажа авто'
А твоих слов достаточно понять, что твои знания по части MySQL ограничиваются лишь статьями, что есть на форумах Pawn, где описывается лишь 4 типа запросов (SELECT, UPDATE, INSERT И DELETE), а дальше ты и не изучал ничего. Для тебя, наверное, будет открытием, что в запросе одновременно можно работать с неограниченными числом таблиц и что операторы можно совмещать (то, что я и сделал, собственно)
А твоё высказывание в чат про то, что я стал Оксом, наводит на мысли о том, что ты просто не можешь принять свою ошибку
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Ага, ок.
Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)