Web-сервер является неотъемлемой частью при разработке web-приложений.
Зная основы работы можно оптимизировать код, чтобы расходов на серверы было меньше.
Понятно что это "приятный бонус" для работодателя, но серверами разве не должны другие люди заниматься ?
Данная статья не про настройку web-сервера, а про основные моменты, которые разработчик должен понимать.
На других языках по другому ?
Да, в других языках нет прямой зависимости 1 worker = 1 запрос
Каждый питонист знает как настроить rate limit в nginx или отбросить ненужные запросы чтобы они даже до приложения не доходили ?
Rate-limit это уже настройка от перегрузки запросами, зная особенности работы web-сервера на PHP можно ускорить обработку запросов, например, вынеся часть операций в фоновую обработку.
<?php
declare(strict_types=1);
readonly class Test
{
private function __construct(private int $a, private int $b)
{
}
public static function foo($a, $b): callable
{
$result = new self($a, $b);
return $result->bar(...);
}
public function bar(int $c): int
{
return $this->a + $this->b + $c;
}
}
echo Test::foo(1, 2)(3);
Да, для ускорения использовался Swoole, он работает на основе event-loop (очень похоже на nodeJS), за счет этого получилось быстро выполнить программу.
Полная документация по swoole есть на их официальном сайте https://wiki.swoole.com, также есть большое количество composer-пакетов, которые позволяют подключить этот модуль к проекту.
Важный момент, простое подключение swoole в рабочий проект будет равносильно использованию php-fpm или apache или другим web-серверам.
Более подробно как можно писать код, какие есть нюансы, за счет чего можно показать высокую производительность, как интегрировать это в существующий проект и хочу написать в следующих статьях. Планов много, этой статьей хочу узнать у людей, интересно ли это или нет
Это просто пример, в котором PHP обогнал golang. В реальной жизни совершенно другие задачи. Замеры были только выполнения кода по десериализации json, не более того.
На счет http-сервера - это спойлер к будущей статье, в которой уже более детально об этом расскажу
У меня стоит следующий способ защиты:
1. Форма стандартная, без каптчи
2. При генерации страницы создается сессия и записывается в базу
3. Скриптом, каждые 10 секунд идет запрос к определенному скрипту, при этом со стороны сервера проверяются заголовки, то есть отправление должно быть через javascript + сохраняем реферер
4. Проверяется было ли обращение скриптом хоть раз, если же не было тогда в регистрации отказываем
При выполнении всех выполненных выше условий даем пользователю зарегистрироваться, если же нет, то в регистрации отказываем
Если кто-нибудь хочет узнать более подробно как это реализовано пишите мне в личку и при условии, что это будет интересно более 10 человек напишу топик с подробным описанием
>>Вы скажите, а что сложного человеку посмотреть JS код, узнать файл md5.php и ботом сначала парсить инфу оттуда?
>>Ну так существует ведь ru.wikipedia.org/wiki/Обфускация JS кода с помощью которой вам надо обфуцировать небольшой JS код в хидере…
Так же хотел дополнить, что любой firebug покажет Вам куда посылается запрос с помощью Ajax со всеми заголовками, так что обфускация в данном случае мне кажется пустая трата времени
Web-сервер является неотъемлемой частью при разработке web-приложений.
Зная основы работы можно оптимизировать код, чтобы расходов на серверы было меньше.
Данная статья не про настройку web-сервера, а про основные моменты, которые разработчик должен понимать.
Да, в других языках нет прямой зависимости 1 worker = 1 запрос
Rate-limit это уже настройка от перегрузки запросами, зная особенности работы web-сервера на PHP можно ускорить обработку запросов, например, вынеся часть операций в фоновую обработку.
Еще есть способ создать Closure:
Swoole не написан на go, возможно вы сравниваете с roadrunner
https://github.com/swoole/swoole-src - ссылка на модуль
Да, для ускорения использовался Swoole, он работает на основе event-loop (очень похоже на nodeJS), за счет этого получилось быстро выполнить программу.
Полная документация по swoole есть на их официальном сайте https://wiki.swoole.com, также есть большое количество composer-пакетов, которые позволяют подключить этот модуль к проекту.
Важный момент, простое подключение swoole в рабочий проект будет равносильно использованию php-fpm или apache или другим web-серверам.
Более подробно как можно писать код, какие есть нюансы, за счет чего можно показать высокую производительность, как интегрировать это в существующий проект и хочу написать в следующих статьях. Планов много, этой статьей хочу узнать у людей, интересно ли это или нет
да, за счет того, что ответы были быстрые и не было лага по ответу, за пределы соединений на одной машине не уходило, поэтому сокетов хватило.
Если вопрос к http2, что количество сокетов было снижено, то - нет, запросы были http первой версии
да, все в docker
k6 использовал для нагрузки
база postgresql, для подключения использовал пул соединений
Это просто пример, в котором PHP обогнал golang. В реальной жизни совершенно другие задачи. Замеры были только выполнения кода по десериализации json, не более того.
На счет http-сервера - это спойлер к будущей статье, в которой уже более детально об этом расскажу
1. Форма стандартная, без каптчи
2. При генерации страницы создается сессия и записывается в базу
3. Скриптом, каждые 10 секунд идет запрос к определенному скрипту, при этом со стороны сервера проверяются заголовки, то есть отправление должно быть через javascript + сохраняем реферер
4. Проверяется было ли обращение скриптом хоть раз, если же не было тогда в регистрации отказываем
При выполнении всех выполненных выше условий даем пользователю зарегистрироваться, если же нет, то в регистрации отказываем
Если кто-нибудь хочет узнать более подробно как это реализовано пишите мне в личку и при условии, что это будет интересно более 10 человек напишу топик с подробным описанием
С уважением, Сергей
>>Вы скажите, а что сложного человеку посмотреть JS код, узнать файл md5.php и ботом сначала парсить инфу оттуда?
>>Ну так существует ведь ru.wikipedia.org/wiki/Обфускация JS кода с помощью которой вам надо обфуцировать небольшой JS код в хидере…
Так же хотел дополнить, что любой firebug покажет Вам куда посылается запрос с помощью Ajax со всеми заголовками, так что обфускация в данном случае мне кажется пустая трата времени