{"id":366,"date":"2021-08-17T16:53:28","date_gmt":"2021-08-17T19:53:28","guid":{"rendered":"http:\/\/hackerzone.com.br\/blog\/?p=366"},"modified":"2022-08-13T00:26:28","modified_gmt":"2022-08-13T03:26:28","slug":"entendendo-fastcgi-suphp-cgi-mod_phpdso-e-php-fpm","status":"publish","type":"post","link":"http:\/\/hackerzone.com.br\/blog\/entendendo-fastcgi-suphp-cgi-mod_phpdso-e-php-fpm\/","title":{"rendered":"Entendendo FastCGI, suPHP, CGI, mod_php(DSO) e PHP-FPM"},"content":{"rendered":"<p>O PHP n\u00e3o faz parte do servidor Apache nativamente, ent\u00e3o para o PHP trabalhar junto ao <strong>Apache<\/strong> precisa-se de um <strong>Processador PHP<\/strong><br \/>\nOp\u00e7\u00f5es mais utilizadas no mercado:<\/p>\n<ul>\n<li>DSO<\/li>\n<li>CGI<\/li>\n<li>suPHP<\/li>\n<li>FastCGI<\/li>\n<li>PHP-FPM<\/li>\n<\/ul>\n<h3>DSO<\/h3>\n<p>Abrevia\u00e7\u00e3o para Dynamic Shared Object, ou <strong>mod_php<\/strong> \u00e9 o mais antigo e o manipulador PHP mais r\u00e1pido dispon\u00edvel. Ele faz o Apache interpretar a partir de um m\u00f3dulo dele mesmo chamado <strong>mod_php<\/strong>. Ele \u00e9 executado diretamente no mesmo processo do Apache, sendo assim tem um consumo de CPU e mem\u00f3ria muito baixo, por\u00e9m com grandes aplica\u00e7\u00f5es o consumo de mem\u00f3ria e processamento pode crescer muito. A desvantagem \u00e9 a seguran\u00e7a, j\u00e1 que o mesmo usu\u00e1rio do Apache poder\u00e1 ter acesso a todas as aplica\u00e7\u00f5es ou sites.<\/p>\n<h3>CGI<\/h3>\n<p>CGI \u00e9 o fallback na mem\u00f3ria dos servidores, quando o <strong>mod_php<\/strong> n\u00e3o esta dispon\u00edvel ele entra, nessa situa\u00e7\u00e3o \u00e9 executado em um processo separado do Apache, a vantagem \u00e9 que ele tem a capacidade de executar o PHP com outro usu\u00e1rio, para isso utiliza o m\u00f3dulo do Apache conhecido como suexec. Uma grande desvantagem \u00e9 o desempenho p\u00e9ssimo, sendo aconselhado apenas para sites min\u00fasculos e a vantagem \u00e9 um grau a mais de seguran\u00e7a.<\/p>\n<h3>FastCGI<\/h3>\n<p>Oferece benef\u00edcios do suPHP de seguran\u00e7a, executa como sendo o propriet\u00e1rio do arquivo, por\u00e9m o <strong>FastCGI<\/strong> mant\u00e9m aberta uma sess\u00e3o para o arquivo quando o processamento \u00e9 feito, com isso aumenta o uso de mem\u00f3ria, mas tamb\u00e9m permite o uso de c\u00f3digo de armazenamento em cache, como APC ou memcached. A vantagem \u00e9 que o manipulador \u00e9 muito r\u00e1pido, mesmo em compara\u00e7\u00e3o com <strong>mod_php<\/strong>.<\/p>\n<h3>PHP-FPM<\/h3>\n<p>At\u00e9 ent\u00e3o \u00e9 a \u00faltima gera\u00e7\u00e3o de manipulador PHP, o FPM (<strong>FastCGI Process Manager<\/strong>). \u00c9 uma alternativa para implementa\u00e7\u00e3o do <strong>FastCGI<\/strong> com algumas features adicionais principalmente para utilizar em sites pesados.<br \/>\nGerenciamento de processos avan\u00e7ados com stop\/start<br \/>\n\u201cslowlog\u201d \u2013 Armazena os registros de scripts executados muito lentamente (e n\u00e3o apenas seus nomes, mas o seu PHP backtraces tamb\u00e9m, usando ptrace e coisas semelhantes para o processo de leitura remota execute_data).<br \/>\nO Pcache melhora o desempenho do PHP, armazenando bytecode script pr\u00e9-compilado em mem\u00f3ria compartilhada, al\u00e9m disso, remove a necessidade do PHP de carregar e analisar scripts em cada pedido no disco.<\/p>\n<p>Qual utilizar esta muito relacionado ao planejamento e infraestrutura, se voc\u00ea tiver recursos dispon\u00edveis n\u00e3o vejo raz\u00e3o para n\u00e3o utilizar o <strong>FastCGI<\/strong> ou <strong>PHP-FPM<\/strong><br \/>\nQuando os recursos de hardware s\u00e3o limitados dai cabe a prioridade entre seguran\u00e7a vs desempenho:<\/p>\n<table class=\"table\" border=\"1\">\n<thead>\n<tr>\n<th><\/th>\n<th><strong>mod_php<\/strong><\/th>\n<th><strong>CGI<\/strong><\/th>\n<th><strong>suPHP<\/strong><\/th>\n<th><strong>FastCGI<\/strong><\/th>\n<th><strong>PHP-FPM<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Uso de mem\u00f3ria<\/strong><\/td>\n<td>Baixo<\/td>\n<td>Baixo<\/td>\n<td>Baixo<\/td>\n<td>Alto<\/td>\n<td>Alto<\/td>\n<\/tr>\n<tr>\n<td><strong>Utiliza\u00e7\u00e3o do CPU<\/strong><\/td>\n<td>Baixo<\/td>\n<td>Alto<\/td>\n<td>Alto<\/td>\n<td>Baixo<\/td>\n<td>Baixo<\/td>\n<\/tr>\n<tr>\n<td><strong>Seguran\u00e7a<\/strong><\/td>\n<td>Baixo<\/td>\n<td>Baixo<\/td>\n<td>Alto<\/td>\n<td>Alto<\/td>\n<td>Alto<\/td>\n<\/tr>\n<tr>\n<td><strong>Executar como propriet\u00e1rio do arquivo<\/strong><\/td>\n<td>N\u00e3o<\/td>\n<td>N\u00e3o<\/td>\n<td>Sim<\/td>\n<td>Sim<\/td>\n<td>Sim<\/td>\n<\/tr>\n<tr>\n<td><strong>Desempenho Geral<\/strong><\/td>\n<td>R\u00e1pido<\/td>\n<td>Lento<\/td>\n<td>Lento<\/td>\n<td>R\u00e1pido<\/td>\n<td>R\u00e1pido<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Como saber qual processador esta ativo em seu servidor<\/h3>\n<p>\u00c9 muito simples, basta voc\u00ea exibir o <strong>phpinfo();<\/strong> e procurar pelo Server API:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-376\" src=\"http:\/\/hackerzone.com.br\/blog\/wp-content\/uploads\/2021\/08\/server-api-php.png\" alt=\"\" width=\"455\" height=\"41\" srcset=\"http:\/\/hackerzone.com.br\/blog\/wp-content\/uploads\/2021\/08\/server-api-php.png 455w, http:\/\/hackerzone.com.br\/blog\/wp-content\/uploads\/2021\/08\/server-api-php-300x27.png 300w\" sizes=\"auto, (max-width: 455px) 100vw, 455px\" \/><\/p>\n<p><a href=\"https:\/\/brasilcloud.com.br\/duvidas\/diferenca-fastcgi-suphp-cgi-mod_php-dso-fpm\/\">https:\/\/brasilcloud.com.br\/duvidas\/diferenca-fastcgi-suphp-cgi-mod_php-dso-fpm\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O PHP n\u00e3o faz parte do servidor Apache nativamente, ent\u00e3o para o PHP trabalhar junto ao Apache precisa-se de um Processador PHP Op\u00e7\u00f5es mais utilizadas no mercado: DSO CGI suPHP FastCGI PHP-FPM DSO Abrevia\u00e7\u00e3o para Dynamic Shared Object, ou mod_php \u00e9 o mais antigo e o manipulador PHP mais r\u00e1pido dispon\u00edvel. Ele faz o Apache [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":460,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[165,41,2,12,162],"tags":[166,169,167,163,168],"class_list":["post-366","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-apache","category-centos","category-linux","category-php","category-php-fpm","tag-cgi","tag-dso","tag-fastcgi","tag-php-fpm","tag-suphp","cat-165-id","cat-41-id","cat-2-id","cat-12-id","cat-162-id","has_thumb"],"_links":{"self":[{"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/posts\/366","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/comments?post=366"}],"version-history":[{"count":11,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/posts\/366\/revisions"}],"predecessor-version":[{"id":384,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/posts\/366\/revisions\/384"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/media\/460"}],"wp:attachment":[{"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/media?parent=366"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/categories?post=366"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/tags?post=366"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}