Como prevenir timeouts no Curl

Como Prevenir Timeouts No Curl



Ao transferir os dados em um servidor, você pode utilizar o Curl. É uma ferramenta de plataforma cruzada e de código aberto que oferece suporte a vários protocolos, incluindo HTTPS e HTTP. Curl funciona em todas as plataformas. No entanto, você pode encontrar um caso em que o Curl atinge o tempo limite ao se conectar ao servidor, o que leva à queda de conexões. Se você tiver esse caso, esta postagem o orientará sobre como evitar tempos limite no Curl. Leia!

Compreendendo os tempos limite de rotação

Quando o Curl executa uma solicitação, como uma solicitação HTTP, a duração máxima necessária para aguardar um determinado evento é o período de tempo limite. Os timeouts são ideais para controlar o tempo que o Curl leva para estabelecer uma conexão, aguardar uma resposta ou até mesmo transferir dados. O tempo limite do Curl é definido usando os parâmetros –max-time ou –connect-timeout.

Existem diferentes tempos limite do Curl que você pode encontrar. Por exemplo, um tempo limite de conexão determina a duração que o Curl espera antes que o servidor estabeleça uma conexão TCP. Se o Curl não conseguir estabelecer a conexão dentro do tempo definido, a conexão será interrompida. Veremos como evitar isso na próxima seção.







Como prevenir timeouts no Curl

Os tempos limite podem afetar sua conexão e impedir que você execute suas tarefas. Se você está tendo problemas com tempos limite, existe uma maneira de evitá-los. Ao definir os valores de tempo limite precisos, você conseguirá controlar quanto tempo o Curl espera pelas solicitações para evitar atrasos. Definindo os timeouts, você conseguirá controlar como o Curl lida com as requisições HTTP.



Existem duas maneiras principais de evitar tempos limite no Curl:



1. –connect-timeout

No caso de timeout de conexão, você pode estender o período de timeout em segundos que o Curl leva para estabelecer uma conexão ou abortá-la caso não haja resposta. Com a opção –connect-timeout, você define seu tempo limite em segundos com a seguinte sintaxe:





curl --connect-timeout

Aqui está um exemplo em que definimos o tempo limite para 20 segundos:

A duração que você define é o tempo máximo que leva antes que sua conexão seja interrompida. Dessa forma, você evitará tempos limite ao usar o Curl.



2. –max-time

Uma maneira alternativa de evitar tempos limite no Curl é especificar o tempo limite total que o Curl deve esperar para que a conexão e a transferência sejam concluídas. Esse tempo limite total é definido usando a opção –max-time com a seguinte sintaxe:

curl --max-time

Por exemplo, podemos ter um –max-time de 30 segundos conforme ilustrado a seguir:

Assim, leva 30 segundos antes que Curl possa experimentar qualquer tempo limite. Trinta segundos é tempo suficiente para a conexão ocorrer e você evitará qualquer tempo limite.

Você também pode definir um script de repetição no tempo limite. Uma nova tentativa ocorre quando nenhuma conexão é estabelecida. Esta opção ajuda a evitar um tempo limite ao repetir a conexão. Você acabará com um caso de loop em seu script. Você pode fazer o loop algumas vezes, como quatro vezes com um intervalo de tempo limite de 5 segundos.

Como você evita tempos limite no Curl depende do tempo limite que você deseja evitar. Geralmente, as duas opções são as formas padrão de evitar tempos limite.

Conclusão

Os tempos limite no Curl ocorrem quando uma conexão com o servidor falha e é interrompida. Você pode evitar esses tempos limite configurando a duração do tempo limite de conexão e o tempo máximo antes que a conexão caia. Discutimos o assunto e os exemplos dados das duas abordagens. Felizmente, você pode implementar o mesmo do seu lado e evitar tempos limite no Curl.