Heim > PHP-Framework > Swoole > Hauptteil

So aktivieren Sie den Swoole-Dienst

Freigeben: 2019-12-09 10:00:05
Original
2624 Leute haben es durchsucht

So aktivieren Sie den Swoole-Dienst

Der Dienststart ist prozessabhängig. Die Aliasfunktion im Quellcode ist tcp Modus.

long sock_type = SW_SOCK_TCP;
long serv_port;
long serv_mode = SW_MODE_PROCESS;
Nach dem Login kopieren

SwServer-Speicher zuweisen und initialisieren

swServer_init(serv);
Nach dem Login kopieren

Hauptsächlich Fabrikmodus, Reaktornummer, Reaktornummer, Verteilungsmodus, Versandmodus, Ringpuffergröße, Ringpuffergröße, Timeout (bestehend aus timeout_sec und timeout_usec) und Worker-Prozessnummer worker_num, maximale Anzahl von Verbindungen max_connection, maximale Anzahl von Anforderungen max_request, http_server-Dienstkonfigurationsinformationen, Heartbeat-Leerlaufzeit heartbeat_idel_time und Prüfintervall heartbeat_check_interval, Puffer-Eingabe- und Ausgabegrößen buffer_input_size und buffer_output_size sowie Pipeline-Cache-Größe.

    swoole_init();
    bzero(serv, sizeof(swServer));
 
    serv->factory_mode = SW_MODE_BASE;
 
    serv->reactor_num = SW_REACTOR_NUM > SW_REACTOR_MAX_THREAD ? SW_REACTOR_MAX_THREAD : SW_REACTOR_NUM;
 
    serv->dispatch_mode = SW_DISPATCH_FDMOD;
    serv->ringbuffer_size = SW_QUEUE_SIZE;
 
    serv->timeout_sec = SW_REACTOR_TIMEO_SEC;
    serv->timeout_usec = SW_REACTOR_TIMEO_USEC;  //300ms;
 
    serv->worker_num = SW_CPU_NUM;
    serv->max_connection = SwooleG.max_sockets;
    serv->max_request = 0;
 
    //http server
    serv->http_parse_post = 1;
    serv->upload_tmp_dir = "/tmp";
 
    //heartbeat check
    serv->heartbeat_idle_time = SW_HEARTBEAT_IDLE;
    serv->heartbeat_check_interval = SW_HEARTBEAT_CHECK;
 
    serv->buffer_input_size = SW_BUFFER_INPUT_SIZE;
    serv->buffer_output_size = SW_BUFFER_OUTPUT_SIZE;
 
    serv->pipe_buffer_size = SW_PIPE_BUFFER_SIZE;
 
    SwooleG.serv = serv;
Nach dem Login kopieren

Analysieren Sie gleichzeitig die IP des Diensthosts, die Portnummer, den Dienstmodus und den Sockentyp und fügen Sie die Informationen zum Server-Überwachungsport zur Liste swServer_add_port der Listenliste hinzu.

//create server socket
    int sock = swSocket_create(ls->type);
    if (sock < 0)
    {
        swSysError("create socket failed.");
        return NULL;
    }
    //bind address and port
    if (swSocket_bind(sock, ls->type, ls->host, ls->port) < 0)
    {
        return NULL;
    }
    //dgram socket, setting socket buffer size
    if (swSocket_is_dgram(ls->type))
    {
        setsockopt(sock, SOL_SOCKET, SO_SNDBUF, &ls->socket_buffer_size, sizeof(int));
        setsockopt(sock, SOL_SOCKET, SO_RCVBUF, &ls->socket_buffer_size, sizeof(int));
    }
    //O_NONBLOCK & O_CLOEXEC
    swoole_fcntl_set_option(sock, 1, 1);
    ls->sock = sock;
 
    if (swSocket_is_dgram(ls->type))
    {
        serv->have_udp_sock = 1;
        serv->dgram_port_num++;
        if (ls->type == SW_SOCK_UDP)
        {
            serv->udp_socket_ipv4 = sock;
        }
        else if (ls->type == SW_SOCK_UDP6)
        {
            serv->udp_socket_ipv6 = sock;
        }
    }
    else
    {
        serv->have_tcp_sock = 1;
    }
 
    LL_APPEND(serv->listen_list, ls);
    serv->listen_port_num++;
Nach dem Login kopieren

Verwenden Sie swoole_server->start zum Starten (swoole_server_start), Registrieren Sie einige Standard- und benutzerdefinierte Rückrufe, protokollieren Sie die Initialisierung und implementieren Sie die Factory-Initialisierung entsprechend dem Dienstmodus (php_swoole_server_before_start).

Die Startfunktion der Fabrik erstellt je nach Dienstmodus mehrere Prozesse oder einzelne Prozesse, Threads oder Threads (swServer_create).

Abhängig davon, ob OpenSSL zum Lesen der Zertifikatsdatei verwendet werden soll, ob der Guardian-Modus zum Initialisieren des Protokolls und zum Aktivieren des Guardian aktiviert werden soll. swServer_start_proxy erstellt main_reactor, der für die Verarbeitung des Listening-Sockets und die Erstellung des Reaktorthreads verantwortlich ist.

(Empfohlenes Lernen: Swoole-Video-Tutorial)

Das obige ist der detaillierte Inhalt vonSo aktivieren Sie den Swoole-Dienst. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage