Não fechar o ?> é mais performante?

164 views
Skip to first unread message

TheDrupalizerNewbie

unread,
Apr 5, 2011, 6:18:59 AM4/5/11
to Drupal Portugal
Viva, pessoal!

Vi neste post que o facto de não fechar o ?> nos ficheiros traz
melhorias de performance:

http://www.duvidasdeinformatica.com/blog/faz-sites-em-drupal-como-criar-um-modulo-em-4-simples-passos/

É verdade? Aplica-se a todos os ficheiros? É só no Drupal ou é
transversal ao PHP? Obrigado a todos.

Jorge Gustavo Rocha

unread,
Apr 5, 2011, 11:44:08 AM4/5/11
to drupal-...@googlegroups.com
Olá,

Parece-me mais uma aberração.

Pode-se usar uma analogia simples: todos os browsers suportam que não se
fechem as tags de body e html, no fim do ficheiro. Aliás os browsers
suportam uma data de falhas no HTML e tentam sempre fazer o melhor para
mostrar a coisa. Mas não é por isso que se deve deixar de escrever
correctamente o HTML. Poupam-se 10 ou 20 bytes se não se fecharem
algumas tags na comunicação, mas perde-se muito mais noutras coisas.

Os algoritmos de parsing ficam bem mais complicados para suportar os
erros sintáticos; a visualização começa a ser diferente, consoante a
decisão do browser em caso de erro; os robots de indexação têm mais
dificuldades; mecanismos de extração de conhecimento ficam mais
complexos e mais sujeitos a erros, etc, etc.

Em resumo, uma aberração. É por causa destas coisas, que é tão difícil
desenvolver para a web. Tudo é permitido, até erros. Por mim, páginas
com erros nem deviam ser existir... Mas isto é apenas uma opinião
pessoal.

Claro que, no caso concreto do PHP, é "quase" indiferente por lá o fim
de "processing instruction". O PHP corre no lado do servidor, e o HTML
gerado pode estar bem na mesma, mesmo sem o ?> final. Também é óbvio que
se o ficheiro terminar com o ?> não são escritos no output mais
caracteres brancos. Por isso, não sei onde se ganha em performance. Ou
melhor, tenho a certeza que não se ganha absolutamente nada em
performance. E se dizem que se ganha, ou mostram o tempo de geração das
páginas e respectivo tempo de transmissão melhorado, ou estão a
inventar...

Abraço,

Jorge

João Ventura

unread,
Apr 5, 2011, 2:03:19 PM4/5/11
to Jorge Gustavo Rocha, drupal-...@googlegroups.com
Olá, Newbie

De facto, omitir o ?> final faz parte dos coding standards de Drupal e as razões para isso são explicadas na página dos ditos:

http://drupal.org/coding-standards#phptags

João Ventura

PS: Jorge, claramente não leste o mail original.. Está-se a falar de fechar as tags finais nos ficheiros PHP, do Drupal e não das tags HTML que obviamente deviam ser fechadas de modo a passar num validador de (X)HTML.

2011/4/5 Jorge Gustavo Rocha <esti...@gmail.com>
Olá,

Ter, 2011-04-05 às 03:18 -0700, TheDrupalizerNewbie escreveu:

Jorge Gustavo Rocha

unread,
Apr 5, 2011, 8:56:20 PM4/5/11
to João Ventura, drupal-...@googlegroups.com
Olá João,

Ter, 2011-04-05 às 19:03 +0100, João Ventura escreveu:
> Olá, Newbie
>
> De facto, omitir o ?> final faz parte dos coding standards de Drupal e
> as razões para isso são explicadas na página dos ditos:
>
> http://drupal.org/coding-standards#phptags
>
> João Ventura
>
> PS: Jorge, claramente não leste o mail original.. Está-se a falar de
> fechar as tags finais nos ficheiros PHP, do Drupal e não das tags HTML
> que obviamente deviam ser fechadas de modo a passar num validador de
> (X)HTML.

Eu li o email original. Comecei com uma analogia (e para isso usei o
HTML), mas depois referi-me explicitamente à questão concreta do PHP,
certo? Qual foi a parte do email que eu não li? Claramente não leste a
minha resposta toda :-)

Abraço,

Jorge

João Ventura

unread,
Apr 5, 2011, 9:07:23 PM4/5/11
to Jorge Gustavo Rocha, drupal-...@googlegroups.com
Olá, Jorge

Realmente, peço desculpa.. Não cheguei ao teu parágrafo final.. Confundi-me com a parte da analogia... :)

De qualquer forma a coisa não se aplica. A best practice em PHP é não fechar o ficheiro com ?>.. A best practice é (X)HTML é fechar tudo. Concordo que possa ser um bocado estranho, mas aí o problema deriva da principal força do PHP: a sua facilidade em "despejar" coisas para o browser do cliente, mesmo que até saiam antes dos headers HTTP. Para que isto não acontecesse, deveria ser obrigatório fazer "echo/print" para fazer output, mas aí lá se iam os .php que são 90% HTML.

João

2011/4/6 Jorge Gustavo Rocha <esti...@gmail.com>

Artur Martins

unread,
Apr 6, 2011, 4:49:06 AM4/6/11
to drupal-...@googlegroups.com, João Ventura, Jorge Gustavo Rocha
"helps prevent accidents like trailing whitespace which will cause the dreaded "headers already sent" error/warning."

Artur Martins


2011/4/6 João Ventura <jo...@venturas.org>
--
Recebeu esta mensagem porque está inscrito no grupo "Drupal Portugal" dos Grupos do Google.
Para publicar uma mensagem neste grupo, envie um e-mail para drupal-...@googlegroups.com.
Para anular a inscrição neste grupo, envie um e-mail para drupal-portug...@googlegroups.com.
Para ver mais opções, visite este grupo em http://groups.google.com/group/drupal-portugal?hl=pt-PT.

Reply all
Reply to author
Forward
0 new messages