Браузер выдает следующую ошибку:Во первых не браузер, а сервер, а браузер ее только отображает. Во вторых это уведомление и предупреждение, а не ошибка.
$view->assign('persons', $data);
работает верно - значит в индексе ДО этого места в дата ничего нет. Что легко проверить с помощью вар_дамп. И если там не пусто - что-то в вашем вью работает криво, или не так как вы предполагаете, читайте документацию к данному методу. Либо такой же мониторинг по HTTP-запросам, чтобы видеть куда чаще обращения идут.Ээээ... access.log, не?
как вариант, но в идеале мониторить какие сейчас запросы происходят в консоли.Precona, но там надо курить маны, но можно настроить на мониторинг топ загружающих запросов и все вот это, со статистикой, графиками етц...
SELECT
CASE WHEN LOWER(a.title) LIKE LOWER('%слово%')
THEN 5 ELSE 0 END +
CASE WHEN LOWER(a.title) LIKE LOWER('%поиска%')
THEN 5 ELSE 0 END AS relevance,
a.title AS title,
a.metadesc,
a.metakey,
a.created AS created,
a.language,
a.catid,
CONCAT(a.introtext,a.fulltext) AS text,
c.title AS section,
CASE WHEN CHAR_LENGTH(a.alias) != 0
THEN CONCAT_WS(':', a.id, a.alias)
ELSE a.id END as slug,
CASE WHEN CHAR_LENGTH(c.alias) != 0
THEN CONCAT_WS(':', c.id, c.alias)
ELSE c.id END as catslug,
'2' AS browsernav
FROM db_content AS a
INNER JOIN db_categories AS c
ON c.id=a.catid
WHERE ((LOWER(a.title) LIKE LOWER('%слово%')
OR LOWER(a.introtext) LIKE LOWER('%слово%')
OR LOWER(a.fulltext) LIKE LOWER('%слово%')
OR LOWER(a.metakey) LIKE LOWER('%слово%')
OR LOWER(a.metadesc) LIKE LOWER('%слово%'))
AND (LOWER(a.title) LIKE LOWER('%поиска%')
OR LOWER(a.introtext) LIKE LOWER('%поиска%')
OR LOWER(a.fulltext) LIKE LOWER('%поиска%')
OR LOWER(a.metakey) LIKE LOWER('%поиска%')
OR LOWER(a.metadesc) LIKE LOWER('%поиска%')))
AND a.state=1
AND c.published = 1
AND a.access IN (1,1,2,3,6)
AND c.access IN (1,1,2,3,6)
AND (a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2021-06-08 16:24:40')
AND (a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2021-06-08 16:24:40')
GROUP BY a.id, a.title, a.metadesc, a.metakey, a.created, a.language, a.catid, a.introtext, a.fulltext, c.title, a.alias, c.alias, c.id
ORDER BY relevance DESC, a.created DESC
LIMIT 20
$sql = "
INSERT INTO `cards`
(`name`, `title`, `p`, `tel`,`email`, `money`, `subject`)
VALUES
(:name, :title, :p, :tel, :email, :money, :subject";
Надеюсь ошибка видна? Создаёт пользователь ключ: licensekey(Пример ключа, не таблицы), и нужно сделать так, чтобы другие пользователи не видели этого ключаНе показывай им его.
А админ мог все ключи видеть.А админу показывай.
Такое возможно в php?Ну, возможно что возможно... пока все еще не очень понятно что тебе нужно...
Т.к я начинающий, я ещё не знаю как это реализовать(Что "это"?
$stmt = $mysql->query("SELECT `value` FROM counter WHERE `id` = 1");
$data = (int)$stmt->fetchColumn();
$data++;
$query = "UPDATE `counter` SET `value` = :value WHERE `id` = :id";
$params = [
":id" => 1,
":value" => $data
];
меняем на $query = "UPDATE `counter` SET `value` = `value`+1 WHERE `id` = :id";
и сразу избавляемся от лишнего запроса. На будущее переписываем как инсерт он дупликэйт апдейт.dataType: 'text',
меняем на dataType: 'json',
и никакие парсе не нужно, получаем сразу объект.Чтобы не углубляться и не расписывать свою задачу со всеми деталями которые не имеют отношения к вопросу,Лучше бы вы задачу расписали, из вашего решения ни цель, ни проблема не видны. Вообще вопрос скорее всего возник из непонимания процесса работы в целом, что можно было бы решить 2 словами.
Как реализовать так, чтобы пользователь не получал ошибку, а просто ждал ответа от сервера.Какой ответ? Нужно посчитать и отдать результат или достаточно чтобы ответ был "все ок"?
В ходе исследования появились мысли, что Nginx подойдет для этой задачи лучше чем Apache.В целом - да, нжинкс быстрее и легче, но есть нюансы. Кроме того, гораздо важнее режим работы пыха, фпм - маст хэв. Но при вашей задаче имхо это вообще не важно.
Можно ли на сервере с такими данными реализовать эту задачу чтобы сервер и СУБД не отваливались?Вообще не вижу проблем, Даже если 100 человек одновременно кликнет - особой беды не будет. Во первых, на каждого будет выделен отдельный трит пхп, во вторых - такие мелкие записи вообще ниачем, мускуль их может херачить сотнями в секунду.
Как можно это синтетически протестировать?apache jmeter или yandex tank.