Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera preciso da ajuda de voces para sanar uma dúvida que estou tendo.
Estou desenvolvendo um projeto com PHP e Mysql. Tenho o apache instalado na máquina.
estou acessando o site localmente: http://localhost
criei um arquivo de cabeçalho e estou dando um include na maioria das páginas.
Também criei um arquivo de conexão com o banco de dados e estou incluindo também com require_once().
A dúvida é a seguinte:
Para que eu não precise ficar configurando o caminho do arquivo em cada situação eu pensei em inserir o caminho completo do arquivo que faz a conexão assim:
require_once('http://localhost/meusite/pastaquecontemoarquivo/nomedoarquivo.php');
Mas assim eu não consegui, retornou um erro...
Tive então de colocar assim;
require_once('C:\apache2triad\htdocs\meusite\pastaquecontemoarquivo\nomedoarquivo.php');
Não tem como eu inserir da primeira maneira? Quando o site estiver no ar será que irá aceitar assim:?
require_once('http://www.meusite/pastaquecontemoarquivo/nomedoarquivo.php');
Aguardo a ajuda de vcs
Se não estiver conseguindo, pode usar algo do tipo:
require_once(dirname(__FILE__) . "/diretorio/arquivo.php");
talvez pq
require_once('http://localhost/meusite/pastaquecontemoarquivo/nomedoarquivo.php');
seja uma url
require_once('C:\apache2triad\htdocs\meusite\pastaquecontemoarquivo\nomedoarquivo.php');
seja um 'arquivo fisico'
senão bastaria require_once('url de qq site.php');
Olá, o ideal quando programamos um site é organizar os arquivos em pastas,por exemplos: as imagens na pasta img...
Para arquivos de configuração eu geralmente coloco em uma pasta com o nome lib e o caminho para chamar este arquivo seria somente
require_once("lib/nomedoarquivo.php");
e lembrando que tudo deve estar dentro htdocs do seu apache.
lembrando que require_once é mais lento que require
>
lembrando que require_once é mais lento que require
Apenas tome cuidado com essa informação.
Muitos afirmam que require_once é mais lento mas, mais lento em qual aspecto ?
Experimento:
1000 arquivos, criados no diretório lib, com o seguinte conteúdo:
<?php
var_dump( __FILE__ );
O arquivo que os carregará utilizando require:
<?php
ob_start();
for ( $i = 0 ; $i < 1000 ; ++$i ){
require sprintf( 'lib/file%04d.php' , $i );
}
ob_end_clean();
E o código que os carregará utilizando require_once:
<?php
ob_start();
for ( $i = 0 ; $i < 1000 ; ++$i ){
require_once sprintf( 'lib/file%04d.php' , $i );
}
ob_end_clean();
[http://forum.imasters.com.br/public/style_emoticons/](http://forum.imasters.com.br/public/style_emoticons/)default/seta.gif Executando teste_require_once:
[neto@localhost cli]$ time php teste_require_once.php
real 0m0.096s
user 0m0.037s
sys 0m0.025s
[neto@localhost cli]$ time php teste_require_once.php
real 0m0.085s
user 0m0.028s
sys 0m0.035s
[neto@localhost cli]$ time php teste_require_once.php
real 0m0.079s
user 0m0.032s
sys 0m0.031s
[neto@localhost cli]$ time php teste_require_once.php
real 0m0.085s
user 0m0.032s
sys 0m0.032s
[neto@localhost cli]$ time php teste_require_once.php
real 0m0.091s
user 0m0.032s
sys 0m0.032s
[http://forum.imasters.com.br/public/style_emoticons/](http://forum.imasters.com.br/public/style_emoticons/)default/seta.gif Executando teste_require:
[neto@localhost cli]$ time php teste_require.php
real 0m0.087s
user 0m0.029s
sys 0m0.029s
[neto@localhost cli]$ time php teste_require.php
real 0m0.068s
user 0m0.031s
sys 0m0.030s
[neto@localhost cli]$ time php teste_require.php
real 0m0.064s
user 0m0.035s
sys 0m0.023s
[neto@localhost cli]$ time php teste_require.php
real 0m0.083s
user 0m0.028s
sys 0m0.031s
[neto@localhost cli]$ time php teste_require.php
real 0m0.070s
user 0m0.031s
sys 0m0.027s
**Média require_once:**
real 0m0.087s
user 0m0.032s
sys 0m0.031s
**Média require:**
real 0m0.074s
user 0m0.030s
sys 0m0.027s
Como fica nítido, a diferença entre require e require_once, em 1000 arquivos, é bem pequena, insignificante mesmo para uma aplicação de médio porte.
É exatamente por isso que, mesmo o Zend Framework, utiliza require_once em vez de require.
Caso alguém queira fazer algum experimento, sugiro o uso do ab.
;)
'insignificante' a diferença realmente, ainda mais levando em conta que um projeto dificilmente vai ter 1000 includes...
mas dependendo do servidor, a diferença pode ser maior, não é?
>
'insignificante' a diferença realmente, ainda mais levando em conta que um projeto dificilmente vai ter 1000 includes...
Bom, isso é relativo, tenho projetos com muito mais (muito mais mesmo) que 1000 arquivos.
>
mas dependendo do servidor, a diferença pode ser maior, não é?
Sim, com certeza o desempenho está diretamente relacionado à máquina servidora.
No caso do experimento, um Dell 64 bits foi utilizado, mas mesmo em um servidor compartilhado, a diferença será proporcional, ou seja, se o tempo de carregamento aumentar para o require_once, aumentará proporcionalmente para o require.
De forma geral, e utilizando toda minha experiência para dizer isso, O custo "desempenho" do require_once é certamente menor do que criar, manualmente, um gerenciador de "requires" ou utilizar a função "mágica" __autoload
;)
Puts, acho que funciona se você só colocar a barra e o resto do endereço, sem o endereço do site:
require_once('/pastaquecontemoarquivo/nomedoarquivo.php');