С помощью этой статьи я надеюсь донести 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 всем!