Maison > développement back-end > tutoriel php > Cliquez directement sur Swoole dans Thinkphp

Cliquez directement sur Swoole dans Thinkphp

coldplay.xixi
Libérer: 2023-04-08 19:10:02
avant
4549 Les gens l'ont consulté


🎜>

Swoole est un moteur de communication réseau asynchrone PHP pour les environnements de production. Permet aux développeurs PHP d'écrire des services TCP, UDP, Unix Socket, HTTP et WebSocket asynchrones et simultanés hautes performances.

Cliquez directement sur Swoole dans Thinkphp

Installation

Installez d'abord l'extension swoole selon les instructions sur le site officiel de Swoole, puis installez l'extension think-swoole.

composer require topthink/think-swoole=2.0.*使用
Copier après la connexion

Utiliser

Swoole ne prend actuellement pas en charge Windows

Utiliser Swoole comme serveur Http

Démarrer le serveur à partir du ligne de commande (Nécessite la version 2.0+ de l'extension think-swoole)

Démarrez le serveur directement à partir de la ligne de commande.

php think swoole
Copier après la connexion
Une fois le démarrage terminé, un serveur HTTP sera démarré à 0.0.0.0:9501, qui pourra accéder directement à l'application actuelle.

Les paramètres Swoole peuvent être configurés dans swoole.php dans le répertoire de configuration de l'application (reportez-vous au contenu du fichier de configuration pour plus de détails).

Si vous devez exécuter en mode démon, vous pouvez utiliser

php think swoole -d
Copier après la connexion

ou définir

'daemonize' =>   true
Copier après la connexion

dans le fichier swoole.php Remarque : puisqu'il n'y a pas de HTTP_HOST lors de onWorkerStart. est en cours d'exécution, le dernier Heureusement, la définition de app_host dans le fichier de configuration de l'application

prend en charge les opérations incluant

php think swoole [start|stop|reload|restart]
Copier après la connexion

Puisqu'il n'y a pas de HTTP_HOST lorsque onWorkerStart est en cours d'exécution, il est préférable de définir le paramètre app_host dans le fichier de configuration de l'application

Une fois lancée, votre application est accessible en utilisant

http://127.0.0.1:9501
Copier après la connexion

.

Si vous devez configurer l'adresse et le port, vous pouvez ajouter le

fichier de configuration swoole.php dans le répertoire de configuration de l'application, puis définir :

<?phpreturn [
    &#39;host&#39;  => &#39;tp5.com&#39;,
    &#39;port&#39;  =>   9508,];
可以支持Swoole自身的配置参数设置,例如:
<?phpreturn [
    &#39;host&#39;          => &#39;tp5.com&#39;,
    &#39;port&#39;          =>   9508,
    &#39;worker_num&#39;    =>   4,
    &#39;max_request&#39;   =>   1000,];
Copier après la connexion

Les événements onWorkerStart et onRequest les méthodes de rappel sont définies dans l'extension (veuillez ne pas les remplacer si vous ne les connaissez pas). Si vous devez personnaliser la méthode de rappel d'événement de swoole, vous pouvez utiliser la définition de fermeture dans le fichier de configuration.

<?phpreturn [
    &#39;host&#39;          => &#39;tp5.com&#39;,
    &#39;port&#39;          =>   9508,
    &#39;worker_num&#39;    =>   4,
    &#39;max_request&#39;   =>   1000,
    &#39;WorkerStop&#39;    =>   function($server, $worker_id){
        // 添加你的代码
    },];
Copier après la connexion

Ou ajoutez

directement dans le fichier de configuration pour utiliser Swoole comme serveur serveur


peut prendre en charge le démarrage direct d'un serveur Swoole (nécessite 2.0. 9 + version)

php think swoole:server

démarrera un service Websocket à 0.0.0.0:9508.

Si vous avez besoin de paramètres personnalisés, vous pouvez les configurer dans config/swoole_server.php, notamment :

Paramètres de configuration


Description
tapezType de service
hôteAdresse d'écoute
portPort d'écoute
modeMode d'exécution
socketType de socket

et prend en charge tous les paramètres de swoole.

Il prend également en charge l'utilisation de fermetures pour définir les rappels d'événements associés.

return [
    // 扩展自身配置
    &#39;host&#39;         => &#39;0.0.0.0&#39;, // 监听地址
    &#39;port&#39;         => 9501, // 监听端口
    &#39;type&#39;         => &#39;socket&#39;, // 服务类型 支持 socket http server
    &#39;mode&#39;         => SWOOLE_PROCESS,
    &#39;socket_type&#39;  => SWOOLE_SOCK_TCP,
 
    // 可以支持swoole的所有配置参数
    &#39;daemonize&#39;    => false,
 
    // 事件回调定义
    &#39;onOpen&#39;       => function ($server, $request) {
        echo "server: handshake success with fd{$request->fd}\n";
    },
 
    &#39;onMessage&#39;    => function ($server, $frame) {
        echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
        $server->push($frame->fd, "this is server");
    },
 
    &#39;onRequest&#39;    => function ($request, $response) {
        $response->end("<h1>Hello Swoole. #" . rand(1000, 9999) . "</h1>");
    },
 
    &#39;onClose&#39;      => function ($ser, $fd) {
        echo "client {$fd} closed\n";
    },];
Copier après la connexion

Vous pouvez également utiliser une classe de service personnalisée
配置参数
描述
type服务类型
host监听地址
port监听端口
mode运行模式
socketSocket type
<?php
namespace app\http;use think\swoole\Server;class Swoole extends Server{
    protected $host = &#39;127.0.0.1&#39;;
    protected $port = 9502;
    protected $option = [ 
        &#39;worker_num&#39;=> 4,
        &#39;daemonize&#39; => true,
        &#39;backlog&#39;   => 128
    ];
 
    public function onReceive($server, $fd, $from_id, $data)
    {
        $server->send($fd, &#39;Swoole: &#39;.$data);
    }}
Copier après la connexion

Prend en charge toutes les définitions de méthodes de rappel de swoole (les méthodes de rappel doivent être de type public)
Si l'attribut serverType est défini comme socket ou http , swoole est pris en charge swoole_websocket_server et swoole_http_server

Ajoutez ensuite les paramètres de configuration dans swoole_server.php :

return [
    &#39;swoole_class&#39;  =>   &#39;app\http\Swoole&#39;,];
Copier après la connexion

Après avoir défini ce paramètre, les autres paramètres de configuration ne sont plus valides.

Démarrez le serveur sur la ligne de commande

php think swoole:server
Copier après la connexion

Support reload|restart|stop|status operation

php think swoole:server reload
Copier après la connexion
Tutoriel recommandé : "

Tutoriel vidéo PHP

"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:liqingbo.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal