Skom

Skom
Рейтинг
166
Регистрация
02.12.2006

Accesslog не очень хороший источник данных для вычисления узкого места в php.

Более информативные данные будут в php-fpm slow log

RAID 10 состоит из двух RAID 1. То есть, 4 диска разбиваются на два RAID 1, в каждом RAID 1 по два диска и система пишет на два RAID 1 информацию поочередно.

Хостер пишет какую-то эпическую херню.

Весь принцип страйпа основан не на "поочерёдной", а на параллельной записи/чтении.

Именно поэтому он даёт почти двукратный рост производительности, правда, в два раза же снижая надёжность системы. (Это, конечно же, при двух дисках в страйпе. А так - N-кратное, пропорционально количеству элементов страйпа)

Именно поэтому лепят десятку. Я б ещё и пятый диск поставил на hotspare. Иначе, в случает деградирования массива, неизвестно сколько пройдёт времени, пока битый диск найдут/заменят. А так, ребилд начнётся сразу же.

Однако, если по всем остальным параметрам хостер вас устраивает и сам факт такой переписки вас не смущает, просто попросите его подоткнуть к серваку квм и соберите массив сами.

Nginx так в лоб не умеет.

URI не есть Location и регекспы в аргументах тут не работают.

Тут надо курить в сторону map

Кстати, даже если бы регекспы и работали бы, все три примера в первом посте с ошибками.

location ~ /id=\d.+$ - Будет искать в строке именно "/id=....", а у вас перед ним &

location ~ ^/id=\d.+$ - То же самое, но с начала строки (^ - начало строки, $ - её конец)

location ~ ^id=\d.+$ { - По аналогии со вторым вариантом.

Letsencrypt даёт бесплатные wildcard сертификаты.

Установка - 5 минут.

Уже сто раз описывалось, но на всякий случай, пошагово

Опишу свой вариант для Ubuntu+nginx

Nginx собирается вручную, поэтому будет в полуавтоматическом режиме

Ставим certbot

apt install certbot

После того, как всё встало

certbot -d "*.site.com" -d "site.com" --manual --preferred-challenges dns certonly --server https://acme-v02.api.letsencrypt.org/directory --email mail@site.com

где site.com - ваш сайт, ну и мыло в конце своё

Будет задано несколько вопросов. а в конце оно попросит прописать TXT запись в ДНС с определённым ключом

Типа, _acme-challenge.site.com.

Перед тем, как в последний раз нажать enter, прописываем запись

Если свой днс, то что-то типа такого

_acme-challenge.site.com.    IN      TXT     "тут пишем ключ"

Если DNS внешний, то просто добавляем такую запись в панельке

Проверяем, что оно отдаётся наружу

dig txt _acme-challenge.site.com

Должно показать ключ. Если показывает, то уже после этого, жмём enter в диалоге certbot

Всё.

В /etc/letsencrypt/live появляется директория site.com с ключами

Соответственно, пихаем их конфиг nginx (ну или куда там надо...)

                ssl_certificate         /etc/letsencrypt/live/site.com/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/site.com/privkey.pem;

Сертификат выдаётся на три месяца, но, чтобы не заморачиваться, просто добавляем в крон


00 12 * * 7 certbot renew --post-hook "systemctl reload nginx" > /var/log/letsencrypt/Renew/renew.log 2> /var/log/letsencrypt/Renew/error.log

Оно раз в неделю будет проверять сертификат на тему протухания, и, если срок подходит к концу, он автоматом обновляет сертификат и в случае успеха релоадит nginx

post-hook может быть любым

Естати. если сайтов много, то renew автоматом для всех срабатывает.

Всё.

Поставил и забыл.

И старайтесь избегать избыточности.

Если id в автоинкременте, то его вообще указывать не обязательно. Как и все остальные поля, где у вас пустые значения.

Если нужно, чтобы писались именно нули, то поставьте dafault NULL в структуре поля самой таблицы. В этом случае, все пустые значения полей будут автоматически становиться нулями.


INSERT INTO `table` (`id`, `parent_id`, `name`, `4`, `5`, `6`, `7`, `8`, `9`)
VALUES (NULL, '{$linksLevel2[0]['id']}', '0', '0', '0', '0', '0', '0', '')

можно упростить до


INSERT INTO `table` (`parent_id`) VALUES ( '{$linksLevel2[0]['id']}')

Если же, всё это будет вертеться исключительно на MySQL, то для удобства чтения собственного кода, можно записать так


INSERT INTO `table` SET `parent_id`= '{$linksLevel2[0]['id']}'

Если речь идёт только о Васе, то


$Names=array('вася','васёк','васек','васисуалий');// тут все варианты
if(in_array(strtolower($name),$Names)){
api1();
}else{
api2();
}

Или, ещё проще


if(preg_match('|^вас[иеёяь]+|ui',$name)){
api1();
}else{
api2();
}

Если же имена произвольные, то как заметил SeVlad, гемор явно не стоит выгоды. Хотя, тоже реально )

А зачем вообще контрагента создаёте?

Вы паспорт сделки собираетесь оформлять?

Да и не нужен он сейчас.

Достаточно прилепить подписанную оферту к СПД на распоряжение о списании с транзитного счёта и подписанную копию квитанции с платежом АдСенса.

Если есть печать ИП, то печать тоже шлёпнуть.

А вообще, проще всего позвонить в валютный контроль и там всё расскажут.

Никто вас там не съест. Мало того, если вы накосячите, то они сами позвонят и скажут как исправить документы и чего не хватает.

У меня ситуация ещё забавнее.

В роботсе всё разрешено, но в консоли написано, что пару десятков страниц проиндексированы, не смотря на запрет в роботсе :)

donc:
А я бы руки отрывал за такие сайты вместе с головой.
Уж 100000 раз твердили миру - любой заведомо тяжелый и напряжный интерактив должен поднатужатся по клику юзера.

Не у всех супербыстрые компы и безлимитный скоростной интервент

Я бы за любой автоплей, независимо от технических возможностей юзера, всё бы отрывал. А если оно ещё и со звуком, то вообще, расстрел на месте из реактивного говномёта.

Когда натыкаюсь на такое - закрываю и больше никогда не возвращаюсь.

Единственное исключение, это когда у юзера в куках лежит его согласие на автоматическое воспроизведение.

Можно ограничить количество запросов скрипта с одного айпишника.

https://nginx.org/ru/docs/http/ngx_http_limit_req_module.html

Например, поставить ограничение в 10 запросов в минуту.

Всего: 706