Concurrence - Comment le plug-in nginx implémente-t-il des opérations chronophages de manière non bloquante ?
phpcn_u1582
phpcn_u1582 2017-05-16 17:12:26
0
1
403

Description du problème :

nginx tout le monde sait que la raison de ses excellentes performances est basée sur sa base asynchrone et non bloquante. Par conséquent, lors du développement de plug-ins nginx pour gérer les requêtes réseau, vous devez vous rappeler d'effectuer certaines opérations fastidieuses de manière bloquante. Sinon, cela affectera sérieusement les performances de nginx...

Cette question se pose :Et si je souhaite effectuer des opérations chronophages dans le plugin ? Par exemple, interroger la base de données (la base de données ne prend pas en charge le protocole http, il existe un protocole spécial) ?

ps : je peux ouvrir un pool de threads et lancer ces opérations de blocage dans le pool, mais existe-t-il un moyen de suspendre le traitement des requêtes en cours dans la file d'attente des événements du framework nginx ? Lorsqu'un changement de statut est envoyé dans la fonction de rappel d'une opération de blocage, laisser nginx continuer à traiter la requête précédente ?

Merci

phpcn_u1582
phpcn_u1582

répondre à tous (1)
迷茫

数据库查询本质上就是网络通信,本质上只要你socket的read,write都是非阻塞的就没问题。说起来容易实际做起来比较复杂。nginx自身有一些可复用的机制可以实现在http上非阻塞的各种操作。然而像tcp之类的通信,可能并没有现成的。你要自己去写,我感觉比较复杂,而且还要结合在nginx里面。

    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!