Для правильного вопроса надо знать половину ответа
IMHO, второй способ - это какое-то извращение. Вместо того, чтобы раз в час по запросу пользователя посчитать прошедшее время, каждую секунду дёргать базу на запись? А если сервер надо будет перезагрузить, то прошедшие две-три-пять минут вообще не учтутся?
Для правильного вопроса надо знать половину ответа
Основная ошибка - вы пытаетесь научиться писать, не научившись читать. mysqli_query
Возвращает FALSE в случае неудачи. В случае успешного выполнения запросов SELECT, SHOW, DESCRIBE или EXPLAIN mysqli_query() вернет объект mysqli_result. Для остальных успешных запросов mysqli_query() вернет TRUE.
Вам вернулся объект mysqli_result, как и следовало ожидать при корректном запросе SELECT. Дальше надо с его помощью выбирать из базы сами данные, используя один из fetch_-методов.
Для правильного вопроса надо знать половину ответа
В таком варианте (Adjacency List) только писать хранимую процедуру, так как MySQL не умеет делать рекурсивные запросы. Можно составить запрос для Nested Set, но вам понадобится перевести свою базу на другую модель организации дерева.
PS. Хотя...
Можно просто наделать LEFT JOIN'ов по максимальному уровню вложенности, взять их значения через IFNULL(..., 1) и сделать AND всех полей. Но такой вариант, мягко говоря, так себе.
Для правильного вопроса надо знать половину ответа
sock-файл вручную создавать не надо, его должен создать MySQL после старта. У вас же он не запускается. Что выдаёт команда service mysqld status? Что в логах самого mysql?
Для правильного вопроса надо знать половину ответа
Если в левой части условий JOIN, WHERE или HAVING используются функции, то индексы по данным выражениям не работают, что сильно замедляет запрос.
Ну и надо посмотреть размер исходных таблиц и селективность JOIN'ов. Может у вас строится картезианское произведение на 10000005 строк.
Для правильного вопроса надо знать половину ответа
Если это уведомления по типу "отослал и забыл", то, IMHO, формировать уведомления и хранить уже готовые. Для людей в текстовом виде, для программ/сервисов - в JSON/XML/сериализации.
Для правильного вопроса надо знать половину ответа
UPDATE `product` AS `p`
JOIN (
SELECT `product_id`, SUM(`quantity`) AS `quantity`
FROM `product_option`
WHERE `subtract` = 1
GROUP BY `product_id`
) AS `o` USING(`product_id`)
SET `p`.`quantity` = `o`.`quantity`
Для правильного вопроса надо знать половину ответа
Если функции действительно работают параллельно и в одном соединении с MySQL, то вполне возможно. Тогда надо каждой функции создать своё соединение с MySQL-сервером.
Для правильного вопроса надо знать половину ответа
Не так уж и много, учитывая, что в основном каждый тип просто имеет несколько вариантов размера. Например, TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT - это всё один и тот же целочисленный тип, просто разного размера, от 1 до 8 байт.
Есть, конечно, специфические типы, те же DECIMAL и BIT, но тут надо просто понять их предназначение.
Начните с документации, там все типы неплохо описаны.