Junior
Quais funções de rede existem no PHP?
sobes.tech IA
Resposta da IA
No PHP, existem muitas funções de rede que cobrem vários aspetos do trabalho com redes. As mais utilizadas são:
- Secção "Sockets" (
Sockets) :socket_create(): Cria um socket.socket_connect(): Estabelece uma ligação com um host remoto.socket_bind(): Liga o socket a um endereço e porta.socket_listen(): Escuta ligações entrantes no socket.socket_accept(): Aceita uma ligação entrante.socket_read(): Lê dados do socket.socket_write(): Escreve dados no socket.socket_close(): Fecha o socket.socket_last_error(): Devolve o último código de erro do socket.socket_strerror(): Devolve uma descrição em string do erro do socket.
<?php
// Exemplo de criação e ligação de um socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "socket_create() não conseguiu: motivo: " . socket_strerror(socket_last_error()) . "\n";
} else {
echo "Socket criado.\n";
}
$result = socket_connect($socket, 'example.com', 80);
if ($result === false) {
echo "socket_connect() não conseguiu: motivo: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
} else {
echo "Ligação estabelecida.\n";
}
socket_close($socket); // Fechar o socket
?>
- Secção "URL" :
file_get_contents(): Lê o conteúdo de um ficheiro numa string (pode ser usado para HTTP).file_put_contents(): Escreve dados num ficheiro (pode ser usado para HTTP POST).get_headers(): Devolve os cabeçalhos da resposta HTTP.parse_url(): Analisa uma URL nos seus componentes.http_build_query(): Gera uma string de consulta.
- Secção "DNS" :
gethostbyname(): Devolve o endereço IPv4 do host.gethostbyaddr(): Devolve o nome do host para um endereço IP.getmxrr(): Obtém os registos MX (troca de correio) para um domínio.
- Secção "cURL" (requer a extensão cURL): Fornece um mecanismo cliente multifuncional para executar pedidos HTTP. Inclui funções para trabalhar com cookies, proxies, autenticação, etc.
curl_init(): Inicializa uma sessão cURL.curl_setopt(): Define opções para a sessão cURL.curl_exec(): Executa a sessão cURL.curl_close(): Fecha a sessão cURL.
<?php
// Exemplo de uso de cURL para obter o conteúdo de uma página
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Devolve o resultado como string
$output = curl_exec($ch);
if ($output === false) {
echo "Erro cURL: " . curl_error($ch);
} else {
echo $output;
}
curl_close($ch);
?>
- Secção "Stream" (fluxos): Os Streams do PHP fornecem uma interface unificada para diferentes tipos de recursos, incluindo sockets de rede e HTTP.
stream_socket_client(): Abre uma ligação de cliente de rede.stream_socket_server(): Cria uma ligação de servidor de rede.stream_select(): Espera por mudanças no estado de múltiplos fluxos.
- Secção "FTP" : Funções para trabalhar com servidores FTP.
ftp_connect(): Estabelece uma ligação com um servidor FTP.ftp_login(): Faz login no servidor FTP.ftp_get(): Descarrega um ficheiro do servidor FTP.ftp_put(): Carrega um ficheiro para o servidor FTP.
- Secção "Mail" : Funções para enviar correio eletrónico.
mail(): Envia um email.
A escolha de uma função específica depende da tarefa. Para trabalhar a baixo nível com protocolos, os sockets são recomendados. Para pedidos HTTP simples, pode usar file_get_contents() ou cURL. cURL é mais flexível e poderoso para operações HTTP complexas. Os fluxos fornecem uma abordagem mais abstrata para as comunicações de rede.