Entendendo o que é URI, URL, URN e conhecendo as diferenças entre POST e GET

Explanações sobre o que é URI, URL, URN e conferindo na prática algumas diferenças entre POST e GET com PHP e HTML. Também tem um teste que verifica algumas diferenças entre POST e GET, um teste simples dos limites de caracteres que alguns navegadores suportam na barra de endereços e um teste simples de velocidade das solicitações POST e GET.

[ Hits: 3.718 ]

Por: Buckminster em 30/04/2024


Tempo de Solicitação 2



Arquivo adaptado para o Windows evitando o bloqueio por não ter certificado local para o https.

"Erro ao enviar a requisição: SSL certificate problem: unable to get local issuer certificate".

Na prática somente acrescentei o parâmetro "CURLOPT_SSL_VERIFYPEER => 0," nas opções "curl_setopt_array" para impedir a verificação do certificado, sendo que não influenciou nos resultados.

Na realidade, fiquei com preguiça de instalar certificado no Windows, foi mais rápido e fácil acrescentar a linha.



tempoW.php:

echo '<br>1 --------------------------------------------------------------------<br><br>';
// GET
// Usando file_get_contents
// URL para teste
$urlG_FGC = 'https://www.vivaolinux.com.br/testarLogin.php';

// Mede o tempo inicial da requisição
$tempoInicialG_FGC = hrtime(true);

// Faz a requisição GET
$respostaG_FGC = file_get_contents($urlG_FGC);

// Mede o tempo final da requisição
$tempoFinalG_FGC = hrtime(true);

// Calcula o tempo decorrido: echo $variavel/1e+6; //nanosegundos para milisegundos
//$tempoDecorridoG_FGC = round(($tempoFinalG_FGC - $tempoInicialG_FGC) * 1000, 2);
$tempoDecorridoG_FGC = round($tempoFinalG_FGC - $tempoInicialG_FGC);

// Exibe a resposta da requisição (para fins de depuração)
echo "Resposta da requisição GET (file_get_contents):<br>";
//var_dump($respostaG_FGC);
//echo $respostaG_FGC;

// Exibe o tempo decorrido formatado com dois dígitos após o ponto
//echo "Tempo decorrido: {$tempoDecorridoG_FGC} ms<br>";
echo "Tempo decorrido: " .number_format($tempoDecorridoG_FGC/1e+6, 2, '.', ''). " ms<br>";

echo '<br>2 --------------------------------------------------------------------<br><br>';
// GET Usando cURL
// URL para teste
$urlG_URL = 'https://www.vivaolinux.com.br/testarLogin.php';

// Inicializa o cURL
$curlG_URL = curl_init();

// Define as opções do cURL
curl_setopt_array($curlG_URL, array(
    CURLOPT_URL => $urlG_URL,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPGET => true,
    //CURLOPT_SSL_VERIFYHOST => 0,
    CURLOPT_SSL_VERIFYPEER => 0,
    CURLOPT_TIMEOUT => 30, // Tempo limite da requisição em segundos
));

// Mede o tempo inicial da requisição
$tempoInicialG_URL = hrtime(true);

// Executa a requisição GET
$respostaG_URL = curl_exec($curlG_URL);

// Mede o tempo final da requisição
$tempoFinalG_URL = hrtime(true);

// Calcula o tempo decorrido: echo $variavel/1e+6; //nanosegundos para milisegundos
//$tempoDecorridoG_URL = round(($tempoFinalG_URL - $tempoInicialG_URL) * 1000, 2);
$tempoDecorridoG_URL = round($tempoFinalG_URL - $tempoInicialG_URL);

// Verifica se houve algum erro na requisição
if(curl_errno($curlG_URL)){
    echo 'Erro ao enviar a requisição: ' . curl_error($curlG_URL);
} else {

    // Exibe a resposta da requisição (para fins de depuração)
    echo "Resposta da requisição GET (cURL):<br>";
    //var_dump($respostaG_URL);

    // Exibe o tempo decorrido formatado com dois dígitos após o ponto
    //echo "Tempo decorrido: {$tempoDecorridoG_URL} ms<br>";
    echo "Tempo decorrido: ".number_format($tempoDecorridoG_URL/1e+6, 2, '.', ''). " ms<br>";
}

// Fecha a conexão cURL
curl_close($curlG_URL);

echo '<br>3 --------------------------------------------------------------------<br><br>';
// POST com file_get_contents
// URL para onde será feita a requisição POST
$urlP_FGC = 'https://www.vivaolinux.com.br/testarLogin.php';

// Dados a serem enviados via POST
$formLogin = filter_input(INPUT_POST, 'formLogin', FILTER_UNSAFE_RAW);
$formSenha = filter_input(INPUT_POST, 'formSenha', FILTER_UNSAFE_RAW);
$dadoP_FGC = array(
    'formLogin' => $formLogin,
    'formSenha' => $formSenha,
);

// Configuração da requisição
$opcoesP_FGC = array(
    'http' => array(
        'method' => 'POST',
        'header' => 'Content-type: application/x-www-form-urlencoded',
        'content' => http_build_query($dadoP_FGC),
        'timeout' => 30, // Tempo limite de espera em segundos
    ),
);
// Início da contagem de tempo
$tempoInicialP_FGC = hrtime(true);

// Realiza a requisição POST
$respostaP_FGC = file_get_contents($urlP_FGC, false, stream_context_create($opcoesP_FGC));

// Fim da contagem de tempo
$tempoFinalP_FGC = hrtime(true);

// Calcula o tempo de requisição
//$tempoDecorridoP_FGC = round(($tempoFinalP_FGC - $tempoInicialP_FGC) * 1000, 2);
$tempoDecorridoP_FGC = round($tempoFinalP_FGC - $tempoInicialP_FGC);

// Exibe a resposta da requisição (para fins de depuração)
echo "Resposta da requisição POST (file_get_contents):<br>";
//var_dump($respostaP_FGC);
if (array_key_exists("formLogin", $dadoP_FGC)) {
    echo "O elemento "; $v = var_dump($formLogin, true); echo $v; echo " está no array!<br>";
}
// Exibe o tempo de requisição formatado com dois dígitos após o ponto
//echo "Tempo decorrido: {$tempoDecorridoP_FGC} ms<br>";
echo "Tempo decorrido: ".number_format($tempoDecorridoP_FGC/1e+6, 2, '.', ''). " ms<br>";

echo '<br>4 --------------------------------------------------------------------<br><br>';
// POST cURL
// URL para teste
$urlP_URL = 'https://www.vivaolinux.com.br/testarLogin.php';

// Dados a serem enviados na requisição POST
$formLogin = filter_input(INPUT_POST, 'formLogin', FILTER_UNSAFE_RAW);
$formSenha = filter_input(INPUT_POST, 'formSenha', FILTER_UNSAFE_RAW);
$dadoP_URL = array('formLogin' => $formLogin, 'formSenha' => $formSenha,);

// Inicializa o cURL
$curlP_URL = curl_init();

// Define as opções do cURL
curl_setopt_array($curlP_URL, array(
    CURLOPT_URL => $urlP_URL,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => http_build_query($dadoP_URL),
    //CURLOPT_SSL_VERIFYHOST => 0,
    CURLOPT_SSL_VERIFYPEER => 0,
    CURLOPT_TIMEOUT => 30, // Tempo limite da requisição em segundos
));

// Mede o tempo inicial da requisição
$tempoInicialP_URL = hrtime(true);

// Executa a requisição POST
$respostaP_URL = curl_exec($curlP_URL);

// Mede o tempo final da requisição
$tempoFinalP_URL = hrtime(true);

// Calcula o tempo decorrido em milissegundos
$tempoDecorridoP_URL = round($tempoFinalP_URL - $tempoInicialP_URL);

// Verifica se houve algum erro na requisição
if(curl_errno($curlP_URL)){
    echo 'Erro ao enviar a requisição: ' . curl_error($curlP_URL);
} else {

    // Exibe a resposta da requisição (para fins de depuração)
    echo "Resposta da requisição POST (cURL):<br>";
    //var_dump($respostaP_URL);
    if (array_key_exists("formSenha", $dadoP_URL)) {
        echo "O elemento "; $v = var_export($formSenha, true); echo $v; echo " está no array!<br>";
    }

    // Exibe o tempo decorrido
    //echo "Tempo decorrido: {$tempoDecorridoP_URL} ms<br>";
    echo "Tempo decorrido: ".number_format($tempoDecorridoP_URL/1e+6, 2, '.', ''). " ms<br>";
}

// Fecha a conexão cURL
curl_close($curlP_URL);

// GET e POST com file()
// Função para medir o tempo decorrido
function calcularTempo($tempoInicial) {
    $tempoFinal = hrtime(true);
    //return round(($tempoFinal - $tempoInicial) * 1000, 2); // Tempo em milissegundos
    return round($tempoFinal - $tempoInicial);
}

// URL
$url = 'https://www.vivaolinux.com.br/testarLogin.php';

// Medição do tempo para requisição GET
$tempoInicialGET = hrtime(true);
$respostaGET = file($url); // Faz a requisição GET
$tempoGET = calcularTempo($tempoInicialGET);

// Medição do tempo para requisição POST
$tempoInicialPOST = hrtime(true);
$dadoPOST = array('parametro1' => 'valor1', 'parametro2' => 'valor2');
$opcoes = array(
        'http' => array(
        'Content-Type' => 'application/x-www-form-urlencoded
',
        'method' => 'POST',
        'header' => 'Content-Type: application/x-www-form-urlencoded',
        'content' => http_build_query($dadoPOST)
    )
);
$contexto = stream_context_create($opcoes);
$respostaPOST = file($url, false, $contexto); // Faz a requisição POST
$tempoPOST = calcularTempo($tempoInicialPOST);
echo '<br>5 --------------------------------------------------------------------<br><br>';
// Exibe a resposta da requisição (para fins de depuração)
echo "Resposta da requisição GET (file):<br>";
//var_dump($respostaGET);
//echo "Tempo decorrido: {$tempoGET} ms<br>";
echo "Tempo decorrido: ".number_format($tempoGET/1e+6, 2, '.', ''). " ms<br>";

echo '<br>6 --------------------------------------------------------------------<br><br>';
// Exibe a resposta da requisição (para fins de depuração)
echo "Resposta da requisição POST (file):<br>";
//var_dump($respostaPOST);
//echo "Tempo decorrido: {$tempoPOST} ms<br>";
echo "Tempo decorrido: ".number_format($tempoPOST/1e+6, 2, '.', ''). " ms<br>";
echo '<br>----------------------------------------------------------------------<br><br>';

Vamos a conclusão...

Página anterior     Próxima página

Páginas do artigo
   1. Entendendo o que é URI, URL, URN
   2. POST e GET
   3. Códigos dos Testes
   4. Execução dos Testes 1
   5. Execução dos Testes 2
   6. Código do Teste de Tempo
   7. Tempo de Solicitação 1
   8. Tempo de Solicitação 2
   9. Conclusão
Outros artigos deste autor

Instalação do PostgreSQL, Apache2 e PHP8 no Debian Buster 10 e no Stretch 9

Como um monte de letras de um código fonte transforma-se em voltagens?

Como ter o ChatGPT no seu site em PHP

Como utilizar de forma correta os repositórios e pacotes Backports

Instalando e Configurando o pgAgent no Linux (pgAdmin e PostgreSQL)

Leitura recomendada

Lista de extensões preferidas para Joomla!

Instalação do MediaWiki em uma Project web do SourceForge

Desenvolvendo um componente de calendário dinâmico em PHP

Instalando a extensão json para o php-5.1 no CentOS/Red Hat

Migração de dados no Joomla

  
Comentários
[1] Comentário enviado por maurixnovatrento em 23/06/2024 - 23:35h

Excelente artigo e bem completo.

______________________________________________________________________
Inscreva-se no meu Canal: https://www.youtube.com/@LinuxDicasPro
Repositório GitHub do Canal: https://github.com/LinuxDicasPro
Grupo do Telegram: https://t.me/LinuxDicasPro
Meu GitHub Pessoal: https://github.com/mxnt10


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts