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, гемор явно не стоит выгоды. Хотя, тоже реально )
А зачем вообще контрагента создаёте?
Вы паспорт сделки собираетесь оформлять?
Да и не нужен он сейчас.
Достаточно прилепить подписанную оферту к СПД на распоряжение о списании с транзитного счёта и подписанную копию квитанции с платежом АдСенса.
Если есть печать ИП, то печать тоже шлёпнуть.
А вообще, проще всего позвонить в валютный контроль и там всё расскажут.
Никто вас там не съест. Мало того, если вы накосячите, то они сами позвонят и скажут как исправить документы и чего не хватает.
У меня ситуация ещё забавнее.
В роботсе всё разрешено, но в консоли написано, что пару десятков страниц проиндексированы, не смотря на запрет в роботсе :)
Я бы за любой автоплей, независимо от технических возможностей юзера, всё бы отрывал. А если оно ещё и со звуком, то вообще, расстрел на месте из реактивного говномёта.
Когда натыкаюсь на такое - закрываю и больше никогда не возвращаюсь.
Единственное исключение, это когда у юзера в куках лежит его согласие на автоматическое воспроизведение.
Можно ограничить количество запросов скрипта с одного айпишника.
https://nginx.org/ru/docs/http/ngx_http_limit_req_module.html
Например, поставить ограничение в 10 запросов в минуту.