복붙노트

[REDIS] '서버에서 라인을 읽는 동안 오류'Predis을주고있다

REDIS

'서버에서 라인을 읽는 동안 오류'Predis을주고있다

내가 채널 듣기에 predis하고 구독을 사용하고, 그것은 exaxtly 60 초 후 아래의 오류 및 다이를, 슬로우는 확실하지 내 웹 서버 오류 또는 타임 아웃.

여기에서 논의되고있는 유사한 문제가 있습니다. 그것의 다량을 가져올 수 없습니다.

나는 0으로 connection_timeout에 predis의 conf 파일을 설정했지만, 많은 도움이되지 않습니다.

작업자를 내가 계속 사용 (그것에 송신 데이터를하고 처리)하는 경우 또한 그것은 오류를 제공하지 않습니다. 너무 관련하여 그 가능성이 타임 아웃 어딘가에, 그리고 그래서.

다음은 그 후 아무런 오류가 발생하지 데이터가 근로자에게 제공되는 경우이 코드를 실행하기 때문에 가능성이 오류를 생산하고 앞으로 나아가 내 코드는 것입니다.

$pubsub = $redis->pubSub();
$pubsub->subscribe($channel1);

foreach ($pubsub as $message) { //doing stuff here and unsubscribing from channel
}

자취

PHP Fatal error:  Uncaught exception 'Predis\Network\ConnectionException' with message 'Error while reading line from the server' in Predis/Network/ConnectionBase.php:159 Stack trace:
#0 library/vendor/predis/lib/Predis/Network/StreamConnection.php(195): Predis\Network\ConnectionBase->onConnectionError('Error while rea...')
#1 library/vendor/predis/lib/Predis/PubSub/PubSubContext.php(259): Predis\Network\StreamConnection->read()
#2 library/vendor/predis/lib/Predis/PubSub/PubSubContext.php(206): Predis\PubSub\PubSubContext->getValue()
#3 pdf/file.php(16): Predis\PubSub\PubSubContext->current()
#4 {main}   thrown in Predis/Network/ConnectionBase.php on line 159

너무 redis.conf 제한 시간을 검사, 그 또한 사용할 수 없습니다.

해결법

  1. ==============================

    1.그냥 0으로 read_write_timeout 연결 매개 변수를 설정 -1이 문제를 해결 할 수 있습니다. 예를 들면

    그냥 0으로 read_write_timeout 연결 매개 변수를 설정 -1이 문제를 해결 할 수 있습니다. 예를 들면

    $redis = new Predis\Client('tcp://10.0.0.1:6379'."?read_write_timeout=0");
    

    연결 매개 변수를 설정하는 README 파일에 설명되어 있습니다. 레디 스의 저자는 그가 그 노트있는 GitHub의에 대한 문제,이 오류에 read_write_timeout 매개 변수의 관련성을 언급 :

  2. ==============================

    2.나는 비슷한 문제 상황에 대한 더 나은 솔루션 0으로 시간 제한을 설정하지만, 지수 백 오프를 사용하지 않는이 있고 상단과 하한을 설정합니다. 0으로 설정 매개 변수 connection_timeout의 변화도 문제가 해결됩니다.

    나는 비슷한 문제 상황에 대한 더 나은 솔루션 0으로 시간 제한을 설정하지만, 지수 백 오프를 사용하지 않는이 있고 상단과 하한을 설정합니다. 0으로 설정 매개 변수 connection_timeout의 변화도 문제가 해결됩니다.

  3. ==============================

    3.나는이 문제에 대한 해결책을 얻었다. 그래서하는 응용 프로그램 서버가 다른 컴퓨터에 특정 응용 프로그램에 연결할 수있는 포트에 한계가있다. 이러한 포트는 지친지고 있었다. 우리는 한계를 증가 문제가 해결되었다.

    나는이 문제에 대한 해결책을 얻었다. 그래서하는 응용 프로그램 서버가 다른 컴퓨터에 특정 응용 프로그램에 연결할 수있는 포트에 한계가있다. 이러한 포트는 지친지고 있었다. 우리는 한계를 증가 문제가 해결되었다.

    우리는 어떻게이 문제에 대해 알고있어? PHP에서, 우리는 소켓 (오류 코드 99)를 만드는 동안 오류 "요청 된 주소를 할당 할 수 없습니다"지고 있었다.

  4. from https://stackoverflow.com/questions/11776029/predis-is-giving-error-while-reading-line-from-server by cc-by-sa and MIT license