Что такое swoole Swoole-это асинхронный, параллельный и высокопроизводительный сетевой коммуникационный движок PHP. Он написан на чистом языке Си. Он обеспечивает асинхронный многопоточный сервер языка PHP, асинхронный сетевой клиент TCP/UDP, асинхронный MySQL, асинхронный Redis, пул подключений к базе данных, AsyncTask, очередь сообщений, таймер миллисекунд, асинхронное чтение и запись файлов, асинхронный DNS-запрос. 。 Swool имеет встроенный сервер/клиент Http/WebSocket и сервер Http 2.0. Swool может широко использоваться в Интернете, мобильной связи, корпоративном программном обеспечении, облачных вычислениях, онлайн-играх, Интернете вещей (IOT), автомобильных сетях, умном доме и других областях. Использование PHP + Swool в качестве сетевой коммуникационной платформы может значительно повысить эффективность корпоративной команды ИТ-исследований и разработок и больше сосредоточиться на разработке инновационных продуктов. С нами
Почему мы используем swool
Пользователи открыли наш веб-сайт. Все, что ему нужно сделать, это проверить список агентов, которым необходимо отправить электронное письмо, и отправить расчетное электронное письмо. Если нам нужно отправить электронное письмо, мы можем написать функцию для его выполнения. Учитывая, что работа в сети может немного задерживаться, но это приемлемо, пользователи будут ждать, пока ваша веб-страница не завершит отправку электронной почты, прежде чем закрыть ее. Если мы хотим опубликовать 10 электронных писем, используйте цикл for для выполнения операции электронной почты 10 раз. В это время, возможно, 10-кратная задержка в сети заставит пользователей немного проявлять нетерпение, но едва ли ждать. Если вы хотите отправить 100 писем, за 100 циклов, пользователи напрямую спросят, какой сломанный сайт! Но на самом деле у нас, вероятно, более 10 000 электронных писем. Как справиться с этой задержкой? Ответ заключается в использовании асинхронности. Инкапсулируйте операцию “электронная почта” и выполните ее 10 000 раз асинхронно в фоновом режиме. Таким образом, когда пользователь отправляет веб-страницу, он ждет только времени, чтобы “отправить запрос на задание по электронной почте в очередь”. И наш внутренний сервис
Как его использовать
1. Установка swool Есть два способа установки, один из которых-загрузить установочный пакет, перенести его на сервер (помните, что это должен быть сервер Linux), затем распаковать его, а затем компакт-диск в расположение установочного пакета сервера, а затем выполнить его.
phpize ./configure make sudo make install
Система будет установлена автоматически, если phpize не существует, вам необходимо установить phpize. Еще один способ прямого исполнения
pecl install swoole
Таким образом, вы можете автоматически загружать и устанавливать. Я выбрал второй путь. Когда установка будет завершена, вам необходимо изменить конфигурацию php.ini на
extension=swoole.so
Поместите его в эту конфигурацию и перезапустите nginx. Выполнение после завершения
php -m
Проверьте, есть ли там свул. Существуют инструкции swool для успешной установки. 2. Запустите сервер Перед просмотром документа я всегда думал, что swole-это фреймворк, который требует от нас настройки и настройки доступа к порту. На самом деле, swool-это расширение php. Нам нужно только добавить сервер. PHP или другие названия для нашего проекта. Код в нем достаточно прост, чтобы написать в соответствии с документом, следующим образом:
// Create Server objects and listen on port 127.0.0.1:9501 $serv = new swoole_server("127.0.0.1", 9501); // Listen for connection entry events $serv->on('connect', function ($serv, $fd) { echo "Client: Connect.\n"; }); // Listening for Data Sending Events $serv->on('receive', function ($serv, $fd, $from_id, $data) { $serv->send($fd, "Server: ".$data); }); // Listen for connection closure events $serv->on('close', function ($serv, $fd) { echo "Client: Close.\n"; }); // Start the server $serv->start();
Здесь создается TCP – сервер для прослушивания порта 9501. Вы также можете изменить номер порта на другой, если ваш сервер поддерживает этот порт. Серверы на стороне сервера должны быть запущены, прежде чем мы сможем использовать swool для асинхронного выполнения. Как это работает? Мы записываем компакт-диск в папку сервера. PHP под вашим проектом, а затем выполните
php server.php
Как проверить успех? Мы можем отключить клиент, снова открыть сервер подключения, а затем выполнить
telnet 127.0.0.1 9501 hello Server: hello
Если это так, то это означает успех. Следует отметить, что если мы сменим сервер. php, мы должны отключить его, прежде чем снова открывать. Я написал здесь сценарий, чтобы сломать предыдущий, названный stop.sh.
#! /bin/bash ps -eaf |grep "server.php" | grep -v "grep"| awk '{print $2}'|xargs kill -9
Это должно быть помещено в ту же папку, что и server. php. Нам нужен компакт-диск, чтобы перейти в эту папку и выполнить sh stop.sh 3、клиент Это может быть выполнено в браузере. Давайте повидаемся с клиентом. PHP со следующим кодом:
$client = new swoole_client(SWOOLE_SOCK_TCP); // Connect to the server if (!$client->connect('127.0.0.1', 9501, 0.5)) { die("connect failed."); } // Send data to the server if (!$client->send("hello world")) { die("send failed."); } // Receiving data from the server $data = $client->recv(); if (!$data) { die("recv failed."); } echo $data; // Close the connection $client->close();
Создайте синхронный TCP-клиент, который можно использовать для подключения к нашему серверу. Отправьте строку hello world на сервер, и сервер вернет строку Server: Hello world. Вышесказанное представляет собой простую установку и подключение swool. Yii2 интегрированный свул Нуждающиеся друзья могут перейти по адресу yii 2-свул для загрузки. yii2 интегрирует код свула.
Справочный материал: Об асинхронной очереди задач