Maison >développement back-end >tutoriel php >Comment utiliser fastcgi_finish_request pour améliorer la vitesse de réponse des pages
Cet article présente principalement l'utilisation de fastcgi_finish_request pour améliorer la vitesse de réponse des pages. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer
Lorsque PHP fonctionne en mode FastCGI. , PHP FPM fournit une méthode appelée fastcgi_finish_request. Selon la documentation, cette méthode peut améliorer la vitesse de traitement des requêtes. Si certains traitements peuvent être effectués après la génération de la page, vous pouvez utiliser cette méthode
Écoutez-la. peut paraître un peu déroutant, illustrons-le à travers quelques exemples :
<?php echo '例子:'; fastcgi_finish_request(); /* 响应完成, 关闭连接 */ /* 记录日志 */file_put_contents('log.txt', '生存还是毁灭,这是个问题.');?>
Accédez à ce script via le navigateur, et il s'avère que les caractères correspondants ne sont pas générés, mais le fichier correspondant est généré. Cela montre qu'après l'appel de fastcgi_finish_request, la réponse du client est terminée, mais en même temps, le script du serveur continue de s'exécuter !
Une utilisation appropriée de cette fonctionnalité peut grandement améliorer l'expérience utilisateur. Voici un autre exemple :
<?php echo '例子:'; file_put_contents('log.txt', date('Y-m-d H:i:s') . " 上传视频\n", FILE_APPEND); fastcgi_finish_request(); sleep(1);file_put_contents('log.txt', date('Y-m-d H:i:s') . " 转换格式\n", FILE_APPEND); sleep(1);file_put_contents('log.txt', date('Y-m-d H:i:s') . " 提取图片\n", FILE_APPEND); ?>
Utilisez sleep dans le code pour. simuler un certain temps L'opération n'a pas été bloquée lors de la navigation, mais les programmes ont été exécutés. Veuillez vous référer au journal pour plus de détails
Enfin, je tiens à vous rappeler que Yahoo a mentionné Flush the Buffer Early dans Best. Pratiques pour accélérer votre site Web. Il s'agit d'utiliser la méthode flush en PHP pour envoyer le contenu au client dès que possible. Elle est légèrement similaire au fastcgi_finish_request présenté dans cet article.
De plus, du point de vue de la portabilité du code, vous pouvez l'attacher au code Le code suivant :
if (!function_exists("fastcgi_finish_request")) { function fastcgi_finish_request() { } }
ne posera pas de problèmes de déploiement de code en non-fpm.
Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'apprentissage de tout le monde. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !
Recommandations associées :
Introduction à la fonction d'extension de la classe memcache
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!