2010-09-28 3 views
4

simple script pour le serveur de connexion:comment réduire le temps d'attente pour la connexion?

#include "hiredis.h" 
int main(void) { 
    int fd; 

    unsigned int j; 
    redisReply *reply; 
    reply = redisConnect(&fd, "test.com", 6379); 

    if (reply != NULL) { 
     printf("Connection error: %s", reply->reply); 
     exit(1); 
    } 

    reply = redisCommand(fd,"PING"); 
    printf("PONG: %s\n", reply->reply); 
    freeReplyObject(reply); 
} 

si le serveur est disponible - tout est normal. Sinon, il y a une longue pause. Comment réduire le temps d'attente à 2 secondes par exemple?

Répondre

1

Vous devez modifier la bibliothèque hiredis et la fonction anetTcpGenericConnect pour que le délai d'attente de connexion soit pris en compte. Il y a un exemple here de la façon de le faire.

1

Je ne connais pas grand-chose à redis. mais je suppose que le redisConnect en interne appelle simplement connect() sur un fd bloquant.

alors essayez de définir le délai préalable à l'aide setsockopt:

struct timeval timeout; 
timeout.tv_usec = 0; 
timeout.tv_sec = 2; 
setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, (void *)&timeout, sizeof(timeout)); 

cela crée l'envoi timout à 2 sec, pour le recevoir, vous faites essentiellement la même chose.

acclamations,