Maison >développement back-end >tutoriel php >Résumé des questions d'entretien PHP Fresh Round
Recommandations associées : "Résumé des questions d'entretien PHP 2021 (collection)"
Résumé des questions d'entretien PHP
Mécanisme de récupération de place
Chaque variable PHP a une structure appelée zval dans le corps , en plus du type et de la valeur de la variable, il inclut également is_ref (= vraie variable de pointeur, -false variable ordinaire), refcount (le nombre pointant vers cette variable), lors de la suppression d'un élément, refcount=0, cette variable est récupérée . Suppression
Les opérations suivantes feront que refcount ne sera jamais 0, ce qui peut entraîner un débordement de mémoire
$a = array( 'one' ); $a[] =& $a; unset($a);
Chaque fois que refcount diminue de un, la variable est placée dans la zone tampon et attend le recyclage du cycle chaque fois que la zone tampon racine est. plein (par défaut 10000), l'algorithme de recyclage sera exécuté
FPM tuning
pm = dynamic : 灵活模式,子进程的数量是根据以下指令来动态生成的,默认是这个模式: pm.max_children,//最大子进程数 pm.start_servers,//初始化启动进程数 pm.min_spare_servers,//最低闲置进程数 pm.max_sqare_servers//最高闲置进程数
pm = ondemand : mode poisson mort, ce mode ne démarrera le processus enfant qu'après l'arrivée de la demande, presque à chaque fois que vous devez attendre une heure pour démarrer le travailleur, plus adaptée au mode hôte virtuel, pm.process_idle_timeout tue le processus enfant après quelques secondes
pm = static : mode puissance maximale, le nombre de processus enfants est déterminé par l'instruction pm.max_children, il fonctionne toujours au processus enfant maximum, qui consomme beaucoup de mémoire, mais la réponse est très rapide. Si la mémoire du serveur est très grande, vous pouvez l'utiliser. Si votre serveur a plus de 8 Go, un processus est calculé comme 20 Mo. un total de 100 processus ne représente que 2G
Log. Il est correct d'écrire plus de journaux
Journal lent
slowlog = /usr/local/var/log/php-fpm.log.slow request_slowlog_timeout = 15s
Journal des erreurs
error_log = /usr/local/var/log/php-fpm.log
Journal d'accès
access.log = log/$pool.access.log
OPCACHE 代码=>AST抽象语法树=>生成opcode缓存 之后还可以优化 opcache.enable=1 //默认关闭 opcache.memory_consumption=512//最大内存空间,单位MB opcache.interned_strings_buffer=64 opcache.max_accelerated_files=32531//缓存脚本数量
opcache.validate_timestamps=0//0不校验文件变动,文件改动,需要手动清除opcache opcache.validate_timestamps=0//1校验文件变动, opcache.revalidate_freq=10 //校验文件的时间间隔 opcache.save_comments=1//保留注释,?注解要用到? opcache.fast_shutdown=0 ##PHP7.4+ 预加载文件 opcache.preload=/home/rawphp/preload.php opcache.preload_user=odin
CGI, FASTCGI, PHPFPM, PHPCGI.
CGI est un protocole qui spécifie le protocole pour le format de données que le serveur transmet aux scripts dynamiques
FASTCGI améliore les performances de CGI et démarre un processus maître, analyse le fichier php.ini et copie directement un processus de travail lorsqu'une requête arrive. La requête peut être traitée immédiatement, et les travailleurs pm.start_servers peuvent également être démarrés à l'avance pour améliorer les performances. PHPFPM est un programme qui implémente PHPCGI. Il s'agit simplement d'un gestionnaire CGI qui analyse simplement la requête et renvoie le résultat, sans fonctions avancées telles. comme gestion des processus.
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!