С помощью этой статьи я надеюсь донести Swoole Amway до большего числа людей. Хотя Swoole может в настоящее время позиционироваться как игрушка для некоторых продвинутых phpers, что делает средний и низкий уровень отпугивающим, а также может запутаться в некоторых сценариях применения, но это не так сложно.
Самопрезентация на официальном сайте Swoole — «Асинхронный механизм сетевой связи PHP для производственной среды». Прежде всего, Swoole — это инструмент разработки сетевых приложений, поддерживающий Http, TCP, UDP и WebSocket.Существуют различия между Swoole и нашей традиционной PHP-разработкой, и есть концепции, которые необходимо понимать. Если вы используете для разработки какие-либо современные фреймворки на основе Swoole, привычки разработки аналогичны традиционным фреймворкам TP и LV.
Так зачем использовать Swoole?
Юрун считает, что есть следующие моменты:
-
Постоянная память, избегайте потери производительности, вызванной повторной загрузкой, и повышайте производительность
-
Асинхронные сопрограммы улучшают возможности параллельной обработки для сценариев с интенсивным вводом-выводом (таких как разработка WeChat, оплата, вход в систему и т. д.)
- Удобная разработка приложений, таких как Http, WebSocket, TCP, UDP и т. д., которые могут взаимодействовать с оборудованием.
- Высокопроизводительная микросервисная архитектура PHP становится реальностью
резидентная память
В настоящее время традиционные фреймворки PHP должны загружать файлы фреймворка и настраивать их перед обработкой каждого запроса. Это могло быть основной причиной проблем с производительностью, и использование Swoole не имеет этой проблемы, загружая несколько раз за раз.сопрограмма
Как показано на рисунке ниже, это сценарий, в котором один и тот же поток обрабатывает параллельные запросы. Например, вам нужно вызывать другие интерфейсы API или читать и записывать большие файлы в интерфейсе. Отражены преимущества традиционной синхронной блокировки и асинхронности сопрограмм. .
Когда дело доходит до сопрограмм, мы должны сначала кратко рассказать о процессах и потоках.Как мы все знаем, процессы очень ресурсоемки.Чтобы обработать большое количество запросов, создание процесса определенно перевесит выигрыш. А многопоточных приложений больше, в На уровне ЦП есть несколько ядер, которые будут выполнять несколько задач.Как только будет создано больше потоков, произойдет потеря планирования потоков.Сопрограммы реализованы на однопоточной основе, что максимально использует ресурсы ЦП, не тратя их впустую на ожидание ввода-вывода. Конечно, чем больше количество сопрограмм, тем больше занимает памяти, но это допустимо, по сравнению с процессами и потоками занимаемые ресурсы сравнительно невелики.
При использовании сопрограмм, при возникновении таких сценариев, как чтение и запись файлов, запрос интерфейсов и т. д., сопрограмма будет автоматически приостановлена, а ЦП будет передан другим сопрограммам для выполнения задач, что может улучшить использование однопоточных ресурсов ЦП. , уменьшить количество отходов и повысить производительность.Пример кода сопрограммы:
<?php
use Swoole\Coroutine as co;
// 协程
$time = microtime(true);
// 创建10个协程
for($i = 0; $i < 10; ++$i)
{
// 创建协程
go(function() use($i){
co::sleep(1.0); // 模拟请求接口、读写文件等I/O
echo $i, PHP_EOL;
});
}
swoole_event_wait();
echo 'co time:', microtime(true) - $time, ' s', PHP_EOL;
// 同步
$time = microtime(true);
// 创建10个协程
for($i = 0; $i < 10; ++$i)
{
sleep(1); // 模拟请求接口、读写文件等I/O
echo $i, PHP_EOL;
}
echo 'sync time:', microtime(true) - $time, ' s', PHP_EOL;
результат операции:0
9
8
7
6
5
4
3
2
1
co time:1.0087130069733 s
0
1
2
3
4
5
6
7
8
9
sync time:10.010055065155 s
Из приведенных выше результатов видно, что выполнение метода сопрограммы не является последовательным, а производительность выше, во время сна право выполнения задачи текущего потока передается другим сопрограммам.Создать HTTP-сервис
На самом деле это не так сложно, как представлялось, посмотрите на код:
$http = new swoole_http_server("127.0.0.1", 9501);
$http->on('request', function ($request, $response) {
$response->end("<h1>Hello Swoole. #".rand(1000, 9999)."</h1>");
});
$http->start();
Микросервисы
Tars — это унифицированная платформа приложений TAF (Total Application Framework) фонового логического уровня, которую Tencent использует с 2008 г. по настоящее время и поддерживает языки C++, Java, PHP и Nodejs. Платформа предоставляет пользователям полный набор решений, связанных с разработкой, эксплуатацией и обслуживанием, а также тестированием, помогая продукту или услуге быстро разрабатывать, развертывать, тестировать и запускать онлайн. Он объединяет масштабируемое кодирование и декодирование протоколов, высокопроизводительную структуру связи RPC, маршрутизацию и обнаружение имен, мониторинг выпусков, статистику журналов и управление конфигурацией.Достигните полного и эффективного управления услугами.
Видеть:сегмент fault.com/ah/119000001…
Не стесняйтесь указывать на ошибки, я действительно хочу порекомендовать Swoole всем!