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

Cliquez directement sur Swoole dans Thinkphp

coldplay.xixi
coldplay.xixiavant
2020-06-08 10:54:394409parcourir


🎜>

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.*使用

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
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

ou définir

'daemonize' =>   true

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]

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

.

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,];

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){
        // 添加你的代码
    },];

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
tapez Type de service
hôte Adresse d'écoute
port Port d'écoute
mode Mode d'exécution
socket Type 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";
    },];

Vous pouvez également utiliser une classe de service personnalisée
配置参数
描述
type 服务类型
host 监听地址
port 监听端口
mode 运行模式
socket Socket 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);
    }}

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;,];

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

Support reload|restart|stop|status operation

php think swoole:server reload

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer