Maison > Article > développement back-end > Comment gérer des tâches fastidieuses en php
Lorsque la pression d'accès au serveur est relativement élevée, nous pouvons utiliser l'équilibrage de charge pour répartir la charge sur plusieurs serveurs. Mais il y a des requêtes plus chronophages.
1. Vous devez vous connecter au serveur de messagerie et envoyer un très long email HTML. (Apprentissage recommandé : Tutoriel vidéo PHP)
2. Les images téléchargées par les utilisateurs doivent être recadrées et plusieurs vignettes générées.
3. Les fichiers téléchargés par les utilisateurs doivent être distribués sur plusieurs serveurs.
Nous rencontrons souvent dans nos applications quotidiennes que l'utilisateur doit attendre un certain temps avant que la demande puisse être complétée. Lorsque l'utilisateur télécharge une photo, une fois la photo téléchargée avec succès, elle est ensuite recadrée et. Enfin, une vignette est générée. Au cours du processus, l'utilisateur ne peut qu'attendre, donc l'expérience utilisateur est assez mauvaise.
Peut-être qu'après que l'utilisateur l'utilisera pour la première fois, il lui sera difficile d'utiliser cette fonction de téléchargement d'images la prochaine fois.
Alors, existe-t-il un moyen d'exécuter ces processus lentement en arrière-plan ?
La réponse est oui. Grâce au traitement distribué, ces tâches chronophages peuvent être placées en arrière-plan, ou même distribuées sur plusieurs serveurs pour le traitement. Le traitement asynchrone s'avère pratique pour ce problème.
Il existe désormais de nombreux logiciels open source capables de réaliser une communication asynchrone, tels que ActiveMQ, Hadoop, Gearman et MecacheMQ, etc. Ils transfèrent intelligemment les calculs vers d'autres serveurs, et tout cela est caché dans l'API. en même temps, ces mécanismes sont multilingues. Vous pouvez utiliser PHP pour attribuer une tâche, puis la traiter dans le programme C/C++ en arrière-plan.
Ce qui suit utilise php et Gearman pour démontrer le processus de traitement asynchrone.
1 Installation de Gearman
tar zxvf gearmand-0.11.tar.gz cd gearmand-0.11 ./configure --prefix=/usr/local/gearman make make install
2. Extension PHP Gearman.
tar zxf gearman-0.6.0.tgz cd gearman-0.6.0 phpize ./configure make
Copiez gearman.so dans le répertoire du module dans le répertoire du module de php. Le répertoire de ma machine est /usr/lib/php5/20060613+lfs/.
cp module/gearman.so /usr/lib/php5/20060613+lfs/.
Puis ajoutez
extension = “gearman.so”
à php.ini et enfin redémarrez le serveur Apache.
3. Démarrez le service Gearman
cd /usr/local/gearman/sbin ./gearman -d -u root
Le port par défaut de Job est 4730, qui peut être démarré par
[root@serv_1 sbin]# netstat -nl | grep 4730 tcp 0 0 :::4730 :::* LISTEN
.
Pass bin/gearman est un outil que nous pouvons utiliser pour découvrir les fonctions de Gearman.
Démarrer Worker :
./gearman -w -f wc -- wc -l & [1] 2547
Exécuter le client :
./gearman -f wc < /etc/passwd 38
Dans l'exemple ci-dessus, une fonction wc est définie dans le Worker. Sa fonction principale est de compter le nombre de lignes de texte. Le client transmet le contenu du fichier /etc/passwd. au Worker pour traitement. Enfin, il est conclu que passwd contient 38 lignes de texte.
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!