Predis: ์„œ๋ฒ„์—์„œ ์ค„์„ ์ฝ๋Š” ๋™์•ˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2011๋…„ 06์›” 07์ผ  ยท  27์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: predis/predis

CommunicationException ๋Š” '์„œ๋ฒ„์—์„œ ๋ผ์ธ์„ ์ฝ๋Š” ๋™์•ˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค'๋ผ๋Š” ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ๋•Œ๋•Œ๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ ์Šคํƒ ์ถ”์ ์˜ Predis ๋ถ€๋ถ„:

Message: Error while reading line from the server
Thrown at: /var/www/lib/redis/Predis.php:1568
Trace:
#0 /var/www/lib/redis/Predis.php(1636): Predis\Connection->onCommunicationException('Error while rea...')
#1 /var/www/lib/redis/Predis.php(724): Predis\Connection->readLine()
#2 /var/www/lib/redis/Predis.php(1577): Predis\FastResponseReader->read(Object(Predis\Connection))
#3 /var/www/lib/redis/Predis.php(1586): Predis\Connection->readResponse(Object(Predis\Commands\Auth))
#4 /var/www/lib/redis/Predis.php(225): Predis\Connection->executeCommand(Object(Predis\Commands\Auth))
#5 /var/www/lib/redis/RedisProxy.php(21): Predis\Client->__call('auth', Array)
#6 /var/www/lib/redis/RedisProxy.php(21): Predis\Client->auth('password')

์˜ํ–ฅ์„ ๋ฐ›๋Š” ์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ณตํ†ต์ ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์˜ค๋ฅ˜๋Š” ๋กœ์ปฌ Redis ์„œ๋ฒ„์—์„œ ๋ฐœ์ƒํ•˜๊ณ  ์ผ๋ถ€๋Š” ์›๊ฒฉ์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๋•Œ๋กœ ์ด ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์˜ˆ:

์Šคํฌ๋ฆฝํŠธ๋Š” Apache์—์„œ ์‹คํ–‰๋˜๊ณ  ๋ธŒ๋ผ์šฐ์ €๋Š” URL๋กœ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋ฏ€๋กœ ํ•œ ๋ฒˆ์— ๋งŽ์€ ์ธ์Šคํ„ด์Šค๊ฐ€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ Redis ๋ช…๋ น์€ Predis๋ฅผ ํ†ตํ•ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค(์ด ์ˆœ์„œ๋กœ a , b , c ๋ฐ d ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์ž„).

  • ์ธ์ฆ
  • ์„ ํƒ
  • ์กด์žฌํ•˜๋‹ค
  • (์กฐ๊ฑด์ด ์ถฉ์กฑ๋œ ๊ฒฝ์šฐ) SETEX
  • ์„ ํƒ b
  • ์•Œํ‘ธ์‹œ
  • ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜๋ฉด

    • ์„ ํƒ b

    • ์ฆ๊ฐ€๋ถ„

    • ์„ ํƒ c

    • ๊ฐ€์ ธ ์˜ค๊ธฐ

    • ์„ ํƒ d

    • ์•Œํ‘ธ์‹œ

๊ตต์€ ๋ช…๋ น์€ ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑํ•œ ์ ์ด ์žˆ๋Š” ๋ช…๋ น์ž…๋‹ˆ๋‹ค. ๋Œ€๋‹ค์ˆ˜(99%)๊ฐ€ AUTH์— ์žˆ์Šต๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ :

$ redis-server -v
Redis server version 2.2.4 (00000000:0)

Predis version 0.6.6

$ php -v
PHP 5.3.3-0.dotdeb.1 with Suhosin-Patch (cli) (built: Oct  1 2010 08:49:29) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans

$ /usr/sbin/apache2ctl -v
Server version: Apache/2.2.9 (Debian)
Server built:   Apr 20 2010 15:40:17

documentation

๋ชจ๋“  27 ๋Œ“๊ธ€

๊ท€ํ•˜์˜ ๋ฌธ์ œ๋Š” ๋งค์šฐ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์˜ˆ์™ธ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์†Œ์ผ“(์ด๋ฏธ ์—ฐ๊ฒฐ๋œ)์ด ์ฝ๊ธฐ ๋˜๋Š” ์“ฐ๊ธฐ ์ž‘์—… ์ค‘์— ์‹œ๊ฐ„ ์ดˆ๊ณผ์— ๋„๋‹ฌํ•  ๋•Œ ๋ฐœ์ƒํ•˜์ง€๋งŒ Redis์˜ ๋กœ์ปฌ ์ธ์Šคํ„ด์Šค๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ๋„ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์ฐธ์œผ๋กœ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. read_write_timeout ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ์‚ฌ์šฉ์ž ์ง€์ •(๋‚ฎ์€) ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ Redis์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ, ์šฐ๋ฆฌ๋Š”ํ•˜์ง€ ์•Š์•˜๋‹ค. ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌ๋˜๋Š” ์œ ์ผํ•œ ๊ตฌ์„ฑ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๊ฐ’์ด 30 connection_timeout ์ž…๋‹ˆ๋‹ค(๊ธฐ๋ณธ๊ฐ’๋ณด๋‹ค ๋†’์Œ).

์ด๊ฒƒ์€ ํฅ๋ฏธ๋กญ์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ˆœ๊ฐ„ ๋‹ค์‹œ ์ฝ์œผ๋ ค๊ณ  ํด๋ผ์ด์–ธํŠธ๋ฅผ ์•ฝ๊ฐ„ ํ•ดํ‚นํ•˜๊ณ  ์ฝ์€ ๋ฌธ์ž์—ด์„ ์˜ˆ์™ธ ํ…์ŠคํŠธ์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒ˜ํ”Œ์„ ๋„ˆ๋ฌด ๋งŽ์ด ๊ฐ€์ ธ์˜ค์ง€๋Š” ์•Š์•˜์ง€๋งŒ ์ฝ๊ธฐ ๋ฌธ์ž์—ด์€ ์œ ํšจํ•œ ์ถœ๋ ฅ์˜ ๋ช‡ ๋ฌธ์ž๋กœ ๋ณด์˜€์Šต๋‹ˆ๋‹ค(์‹ค์ œ๋กœ ํ™•์ธ๋˜์ง€ ์•Š์Œ). ์–ด์จŒ๋“  ๋น„์–ด ์žˆ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ํ•˜๋‹ค. ๋˜ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ: ์ผ๋ฐ˜์ ์œผ๋กœ ์•ฝ 1์ดˆ ์ด๋‚ด์— ์ „์ฒด ์˜ค๋ฅ˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์žˆ์ง€๋งŒ ๊ทธ ์ „ํ›„์—๋Š” ์•„๋ฌด ๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Redis์˜ ๋ฌธ์ œ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Predis๋ฅผ ๋ฒ”์ธ์œผ๋กœ ๋ฐฐ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ(๋‹ค๋ฅธ ์–ธ์–ด/ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ˜ธ์ถœ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ ์™ธ์—)?

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋กœ try ... catch ๋ธ”๋ก์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์˜ˆ์™ธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ˜ธ์ถœ์„ ๋ž˜ํ•‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

<?php
try {
    // Redis commands
}
catch (Predis\CommunicationException $exception) {
    $stream = $exception->getConnection()->getSocket();
    $metadata = var_export(stream_get_meta_data($stream), true);
    // log the $metadata string somewhere so that you can retrieve it
    throw $exception;
}

$metadata ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ๋ณธ PHP ์ŠคํŠธ๋ฆผ์˜ ์ƒํƒœ์— ๋Œ€ํ•œ ์œ ์šฉํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์–ป์–ด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์„œ๋ฒ„์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์ถ”์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ connection_timeout ์˜ ๊ฐ’์€ ์›๊ฒฉ ๋์ ์— ๋Œ€ํ•œ ํด๋ผ์ด์–ธํŠธ ์†Œ์ผ“ ์ŠคํŠธ๋ฆผ์˜ ์—ฐ๊ฒฐ ์ž‘์—…์—๋งŒ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ๋Œ€์‹  read_write_timeout ๋Š” ์—ฐ๊ฒฐ๋œ ์†Œ์ผ“์„ ํ†ตํ•œ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ์ž‘์—…์˜ ์‹œ๊ฐ„ ์ œํ•œ์„ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค(์ œ ๊ธฐ์–ต์ด ๋งž๋‹ค๋ฉด ๊ธฐ๋ณธ๊ฐ’์€ 30์ดˆ์—ฌ์•ผ ํ•จ). ์•ฝ๊ฐ„์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด read_write_timeout ๋” ๋†’์€ ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ŠคํŠธ๋ฆผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ๋ช‡ ๊ฐ€์ง€ ์ƒ˜ํ”Œ์„ ์บก์ฒ˜ํ•œ ํ›„์—๋งŒ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

์•„์ฃผ ์ข‹์Šต๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ์‹œ๋„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž‘์—…์€ ์ง€๊ธˆ๋ถ€ํ„ฐ ์•ฝ 12์‹œ๊ฐ„ ํ›„์— ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค(์šฐ๋ฆฌ๋Š” CET์— ์žˆ์Œ). ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ Predis์˜ ํ˜„์žฌ ๋™์ž‘์ด ํ•ด๋‹น ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์—์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์˜ˆ์™ธ๊ฐ€ ์ „ํŒŒ๋˜๊ธฐ ์ „์— ๊ธฐ๋ณธ ์ŠคํŠธ๋ฆผ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋‹ซํžˆ์ง€ ์•Š๋„๋ก false ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์ด ์ฝ”๋“œ ์ค„์„ ์ผ์‹œ์ ์œผ๋กœ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ข‹์•„. ๋๋‚ฌ์–ด. ์•„์ง ์˜ˆ์™ธ๋Š” ์—†์—ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์˜ˆ์ž…๋‹ˆ๋‹ค(๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค).

Message: Predis socket metadata dump: array (
  'stream_type' => 'tcp_socket/ssl',
  'mode' => 'r+',
  'unread_bytes' => 0,
  'seekable' => false,
  'timed_out' => true,
  'blocked' => true,
  'eof' => false,
)

timed_out => true ๋Š” ์ด๋ก ์„ ํ™•์ธํ•˜๊ณ  read_write_timeout ์˜ฌ๋ฆฌ๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๊ฒ ์ฃ ? (๋˜๋Š” ์ ์–ด๋„ ์ง€๊ธˆ์€ ์—†์• ๋„๋ก)

read_write_timeout _might_ ๊ฐ’์„ ์˜ฌ๋ฆฌ๋ฉด ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์ง€๋งŒ ์‹ค์ œ๋กœ ์‹œ๊ฐ„ ์ดˆ๊ณผ์˜ ์›์ธ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋ฉฐ ๊ธฐ๋ณธ๊ฐ’์€ ์ด๋ฏธ ๋งค์šฐ ๋†’์€ ๊ฐ’์ธ 60์ดˆ(์ง€๊ธˆ ํ™•์ธ๋จ)์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ Redis์— ์„ฑ๊ณต์ ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์ž„์‹œ TCP/IP ํฌํŠธ ๊ณ ๊ฐˆ๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ๋ฐฐ์ œํ•ฉ๋‹ˆ๋‹ค.

Redis ์ธ์Šคํ„ด์Šค์— ํ‰๊ท ์ ์œผ๋กœ ๋ช‡ ๊ฐœ์˜ ๋™์‹œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ? TCP/IP ๋Œ€์‹  UNIX ๋„๋ฉ”์ธ ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜์—ฌ locahost์—์„œ ์‹คํ–‰๋˜๋Š” Redis ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๊ณ  ์—ฌ์ „ํžˆ ์ž„์˜์˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๋‘ ๊ฐœ์˜ Redis ์„œ๋ฒ„์—๋Š” 17 +/- 5๊ฐœ์˜ ์—ฐ๊ฒฐ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ์ตœ๋Œ€ ์ŠคํŒŒ์ดํฌ๊ฐ€ 30์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์ผ์ผ ์ŠคํŒŒ์ดํฌ๊ฐ€ 60-100์ž…๋‹ˆ๋‹ค(๋‘˜ ๋‹ค ๋ช‡ ๋ถ„ ๋™์•ˆ ์ง€์†๋˜๋ฉฐ ์˜ค๋ฅ˜ ์‹œ๊ฐ„๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Œ). ์„œ๋ฒ„ ์ค‘ ํ•˜๋‚˜์— UNIX ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ๋งค์šฐ ์ ์€ ์ˆ˜์˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

Message: Connection timed out
Thrown at: /var/www/lib/redis/Predis.php:1568
Trace:
#0 /var/www/lib/redis/Predis.php(1518): Predis\Connection->onCommunicationException('Connection time...', 110)
#1 /var/www/lib/redis/Predis.php(1494): Predis\Connection->redisStreamInitializer(Object(Predis\ConnectionParameters))
#2 /var/www/lib/redis/Predis.php(1648): Predis\Connection->connect()
#3 /var/www/lib/redis/Predis.php(1599): Predis\Connection->getSocket()
#4 /var/www/lib/redis/Predis.php(1573): Predis\Connection->writeBytes('*2??$4??AUTH??$...')
#5 /var/www/lib/redis/Predis.php(1582): Predis\Connection->writeCommand(Object(Predis\Commands\Auth))
#6 /var/www/lib/redis/Predis.php(225): Predis\Connection->executeCommand(Object(Predis\Commands\Auth))
#7 /var/www/lib/redis/RedisProxy.php(21): Predis\Client->__call('auth', Array)

์ด๊ฒƒ์€ ๋‹จ์ง€ ๋•Œ๋ฌธ์— ๋  ์ˆ˜์žˆ๋Š” ์ด ๋ณ€ํ™”ํ•˜์ง€๋งŒ ์–ด์ฉŒ๋ฉด ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์„ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์Œ, connect() ์ž‘์—… ์ค‘์—๋„ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ณด๋Š” ๊ฒƒ์€ ๋‹ค์†Œ ์•ˆ์‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์™„์ „ํžˆ ์ด์ƒํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค :-) ์–ด์จŒ๋“ , Redis์— ๋Œ€ํ•œ 100๊ฐœ์˜ ๋™์‹œ ์—ฐ๊ฒฐ์€ (์ ์–ด๋„ Redis ์ธก์—์„œ๋Š”) ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๋ฐฉ๊ธˆ Xdebug๊ฐ€ ๋กœ๋“œ๋œ ์ƒํƒœ์—์„œ PHP๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. Xdebug๊ฐ€ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ PHP ์ฝ”๋“œ๋ฅผ ์ƒ๋‹นํžˆ ๋Š๋ฆฌ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค ์™ธ์—๋„ PHP ์ŠคํŠธ๋ฆผ์ด๋‚˜ ๋กœ๋“œ ์ค‘์ธ ๋ฌด์–ธ๊ฐ€๋ฅผ ์—‰๋ง์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋ฉด ๋น„ํ™œ์„ฑํ™”๋ฅผ ์‹œ๋„ํ•ด์•ผ ํ•˜๋ฉฐ ์ด๋ ‡๊ฒŒ ํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฉด... ๊ธ€์Ž„์š”. ํ•  ๋ง์„ ์žƒ์—ˆ์Šต๋‹ˆ๋‹ค.

์ƒํ™ฉ์ด ์–ด๋–ป๊ฒŒ ๋Œ์•„๊ฐ€๋Š”์ง€ ๋ณด๊ณ  ์ด๊ฒƒ์€ Predis์˜ ๋ฒ„๊ทธ๋กœ ๋ณด์ด์ง€ ์•Š์œผ๋ฉฐ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์—ฐ๊ฒฐ ๋ฌธ์ œ(๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ localhost์˜ ์—ฐ๊ฒฐ์—๋Š” ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค)
  • PHP + Apache ํ™˜๊ฒฝ์˜ ์ผ์ข…์˜ ์ž˜๋ชป๋œ ๊ตฌ์„ฑ(๋ช‡ ๋…„ ๋™์•ˆ Apache๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„ ๋„์›€์ด ๋  ์ˆ˜ ์—†์Œ)

์•„์ฃผ ์ข‹์Šต๋‹ˆ๋‹ค. Xdebug๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฉด ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ด๋ฅผ ์žฌํ˜„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Redis ์‚ฌ๋žŒ๋“ค์ด ์ด๊ฒƒ์„ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์ขํ˜€์ง€๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ฃจํ”„๋ฐฑ ์—ฐ๊ฒฐ์„ ์œ„ํ•ด ์œ ๋‹‰์Šค ์†Œ์ผ“์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋น„๋ก ๊ทธ๋“ค์ด ์ด๊ฒƒ์„ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜๋”๋ผ๋„(์†๋„ ํ–ฅ์ƒ์€ ๊ฑด๊ฐ•์— ์ข‹์Šต๋‹ˆ๋‹ค), ๊ทธ๋ž˜์„œ ๊ทธ ํฌ์ธํ„ฐ์—๋„ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์‹œ๊ฐ„ ๋‚ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค :)

์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”, ์ด์ œ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค :-)

๋ฌผ๋ก  ๊ฒฐ๊ณผ์™€ ํ•จ๊ป˜ ์—ฌ๊ธฐ์— ์“ฐ๊ฒ ์Šต๋‹ˆ๋‹ค. Xdebug๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•œ ์ดํ›„๋กœ ์˜ค๋ฅ˜๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ํฅ๋ฏธ๋กœ์šด ํŒ์ด ์žˆ์œผ๋ฏ€๋กœ Redis ๋ฉ”์ผ๋ง ๋ชฉ๋ก์—์„œ ์ด ๋ฌธ์ œ(์‹œ๊ฐ„ ์ดˆ๊ณผ)์— ๋Œ€ํ•œ ์ง„ํ–‰ ์ค‘์ธ ํ† ๋ก  ์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์‹ค ์ œ๊ฐ€ ๊ทธ ์“ฐ๋ ˆ๋“œ์˜ OP๋ฅผ ์ผ์–ด์š” :) ๊ทธ๋ž˜๋„ ๋งํฌ ์˜ฌ๋ ค์ฃผ์…”์„œ ๋„ˆ๋ฌด ์ข‹์•˜์–ด์š”.

๋ฌธ์ œ์˜ ์›์ธ์€ ์ž˜๋ชป๋œ Realtek ๋“œ๋ผ์ด๋ฒ„์˜€์Šต๋‹ˆ๋‹ค(์ปค๋„ 2.6.30 ์ด์ „์˜ r8169๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ r8168์„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ). Redis ๋˜๋Š” Predis์™€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ท€์ค‘ํ•œ ์ •๋ณด๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์ด์ƒํ•œ ๋ฌธ์ œ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋Š” ๊ฒƒ์€ ์›์ธ์ด ๋‚ฎ์€ ์ˆ˜์ค€์— ์žˆ์„ ๋•Œ ์–ด๋ ต๊ณ  ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Abesto, ๊ท€์ฐฎ๊ฒŒ ํ•ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. "๋ฌธ์ œ์˜ ์›์ธ์ด Realtek ๋“œ๋ผ์ด๋ฒ„์— ๊ฒฐํ•จ์ด ์žˆ์Œ"์„ ์–ด๋–ป๊ฒŒ ์•Œ์•„๋ƒˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”!

@rookie7799 ์ „ํ˜€ ๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค. /var/log/kernel.log ์—๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๋™์‹œ์— "์ธํ„ฐํŽ˜์ด์Šค ์—…" ๋ฉ”์‹œ์ง€๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๊ธฐ ์ „์— ๋งํฌ๊ฐ€ ์ž ์‹œ ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Hetzner์˜ ๋ฌธ์ œ ๋ฐ ์ž์„ธํ•œ ์†”๋ฃจ์…˜ ์–ธ๊ธ‰: http://wiki.hetzner.de/index.php/Installation_des_r8168-Treibers/en

๋‹ต๋ณ€์— ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ ค์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ์—์„œ "brpop bar 0" ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ๋•Œ๋„ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. read_write_timeout์„ -1๋กœ ์„ค์ •ํ•˜๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ... ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋˜๋Š” ์ด ์†”๋ฃจ์…˜์ด ๋‹ค๋ฅธ ์•Œ ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋Ÿฐ๋ฐ ์šฐ๋ฆฌ ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ 60์ดˆ ์ œํ•œ ์‹œ๊ฐ„์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.(

0์ด ์•„๋‹Œ ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ฐจ๋‹จ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "์‹œ๊ฐ„ ์ดˆ๊ณผ"์— ๋„๋‹ฌํ•˜๋ฉด ๋ธ”๋ก์ด ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ช‡ ๊ฐ€์ง€ ๊ฒ€์‚ฌ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ฐจ๋‹จ ๋ช…๋ น์„ ๋‹ค์‹œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋งค์šฐ ๊ธด ์—ฐ๊ฒฐ์„ ๋Š์ง€ ์•Š๋„๋ก ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

์ข‹์€ ์ƒ๊ฐ์ด๋„ค์š” ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค :)

์˜ค๋žœ ์‹œ๊ฐ„์ด ์ง€๋‚œ ํ›„์— ๋‹ค์‹œ ์ด ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๋ฐ๋Š” ๋‹ค๋ฅธ ์ด์œ ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•ž์—์„œ ์–ธ๊ธ‰ํ•œ ๋Œ€๋กœ ์ŠคํŠธ๋ฆผ ๋””๋ฒ„๊น…์„ ์‹œ๋„ํ–ˆ๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

array(7) {
  ["stream_type"]=>
  string(14) "tcp_socket/ssl"
  ["mode"]=>
  string(2) "r+"
  ["unread_bytes"]=>
  int(0)
  ["seekable"]=>
  bool(false)
  ["timed_out"]=>
  bool(false)
  ["blocked"]=>
  bool(true)
  ["eof"]=>
  bool(false)
}

read_write_timeout ์„ค์ •๋˜์–ด -1 , ์šฐ๋ฆฌ๋Š” ํ•˜๋‚˜ ๊ฐœ์˜ ๋งˆ์Šคํ„ฐ์™€ ํ•˜๋‚˜ ๊ฐœ์˜ ์Šฌ๋ ˆ์ด๋ธŒ ์‚ฌ์šฉ replication => true . IP ์ฃผ์†Œ๋กœ ํŒ๋‹จํ•˜๋ฉด ๋งˆ์Šคํ„ฐ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ฐจ๋‹จ ๋ชจ๋“œ ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‹ค๋ฅธ PHP Redis ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์— ์ด๊ฒƒ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋ฐฉ๊ธˆ phpredis์—์„œ ์ „ํ™˜ํ–ˆ๊ณ  ์ด๊ฒƒ์€ cron ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๋Š” ์ •ํ™•ํžˆ 60์ดˆ ํ›„์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ๋””๋ฒ„๊ทธ ์ •๋ณด๋ฅผ ์บก์ฒ˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

          catch (Predis\CommunicationException $exception) {
                $stream = $exception->getConnection()->getResource();
                $errorMessage = var_export(stream_get_meta_data($stream), true);
                //Log::info($errorMessage);
                continue;
            }

๋‚˜๋Š” ๋‹ค์Œ์„ ์–ป๋Š”๋‹ค :

array (
  'timed_out' => false,
  'blocked' => true,
  'eof' => false,
  'stream_type' => 'tcp_socket/ssl',
  'mode' => 'r+',
  'unread_bytes' => 0,
  'seekable' => false,
)

read_write_timeout์„ -1๋กœ, redis.conf์˜ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ 0์œผ๋กœ, blpop์˜ ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ 0์œผ๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋“ ์ง€ ์ด์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋” ๋งŽ์€ ์ •๋ณด:
์žฅ๊ธฐ ์‹คํ–‰ ์žฅ์ธ ๋ช…๋ น์—์„œ Laravel 5.1๊ณผ ํ•จ๊ป˜ redis 3(๋„์ปค ์ด๋ฏธ์ง€, ์•ŒํŒŒ์ธ ๋ณ€ํ˜•) ์‚ฌ์šฉ.

์•„๋‹ˆ ๋ฒค, ๋‚˜๋Š” ์ด๊ฒƒ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฒค ํฌ๋กฌ์›ฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.
>

์•ˆ๋…•ํ•˜์„ธ์š” @pravindahal https://github.com/pravindahal

๋””๋ฒ„๊ทธ ์บก์ฒ˜ ์ฝ”๋“œ๋ฅผ ๊ฒŒ์‹œํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๋ฐ๋‚˜ ๋‚˜์™”์–ด?
๊ฒฐ์˜์•ˆ์„ ํ–ฅํ•ด?

๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:-

|๋ฐฐ์—ด(
'stream_type' => 'tcp_socket/ssl',
'๋ชจ๋“œ' => 'r+',
'์ฝ์ง€ ์•Š์€_๋ฐ”์ดํŠธ' => 0,
'์ฐพ์„ ์ˆ˜ ์žˆ๋Š”' => ๊ฑฐ์ง“,
'timed_out' => ๊ฑฐ์ง“,
'์ฐจ๋‹จ๋จ' => ์ฐธ,
'eof' => ๊ฑฐ์ง“,
)
|

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/nrk/predis/issues/32#issuecomment-263821705 ๋˜๋Š”
์Šค๋ ˆ๋“œ๋ฅผ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AA2nC7YRPNChZdEOx9c1N3pBJNbr0KW3ks5rDT5XgaJpZM4HN5ze .

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ๋™์ผํ•œ์ง€ ํ™•์‹ ์ด ์„œ์ง€ ์•Š์•„ ๋Œ“๊ธ€์„ ์‚ญ์ œํ–ˆ์Šต๋‹ˆ๋‹ค.
๋” ๋งŽ์€ ๋””๋ฒ„๊น… ํ›„.

ํ•˜์ง€๋งŒ ๊ทธ๋Ÿด ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Predis๋ฅผ phpredis๋กœ ๊ต์ฒดํ–ˆ๋Š”๋ฐ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํ›„์—
๋” ๊ฒ€์ƒ‰ํ•˜๋ฉด default_socket_timeout ์„ค์ •์„ ์ฐพ์•„ ๋‹ค์Œ์œผ๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
-1. ์ด๊ฒƒ์€ php.ini์— ์žˆ์Šต๋‹ˆ๋‹ค

http://php.net/manual/en/filesystem.configuration.php#ini.default - ์†Œ์ผ“ ์‹œ๊ฐ„ ์ดˆ๊ณผ

๊ทธ๊ฒƒ์€ ํŠธ๋ฆญ์„ ํ–ˆ๋‹ค. ์„ค์ •์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค
์—ฐ๊ฒฐ ๋งค๊ฐœ๋ณ€์ˆ˜ read_write_timeout. PHP์˜ ์„ค์ •์ด ๊ทธ๊ฒƒ์„ ๋Šฅ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค
์‚ฌ๋ฌผ์˜ ์™ธ๋ชจ์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

2016๋…„ 11์›” 30์ผ 11์‹œ 43๋ถ„์— Pravin Dahal [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ ๋ฒค, ๋‚˜๋Š” ์ด๊ฒƒ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฒค ํฌ๋กฌ์›ฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.
>

์•ˆ๋…•ํ•˜์„ธ์š” @pravindahal https://github.com/pravindahal

๋””๋ฒ„๊ทธ ์บก์ฒ˜ ์ฝ”๋“œ๋ฅผ ๊ฒŒ์‹œํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๋ฐ๋‚˜ ๋‚˜์™”์–ด?
๊ฒฐ์˜์•ˆ์„ ํ–ฅํ•ด?

๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:-

|๋ฐฐ์—ด(
'stream_type' => 'tcp_socket/ssl',
'๋ชจ๋“œ' => 'r+',
'์ฝ์ง€ ์•Š์€_๋ฐ”์ดํŠธ' => 0,
'์ฐพ์„ ์ˆ˜ ์žˆ๋Š”' => ๊ฑฐ์ง“,
'timed_out' => ๊ฑฐ์ง“,
'์ฐจ๋‹จ๋จ' => ์ฐธ,
'eof' => ๊ฑฐ์ง“,
)
|

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/nrk/predis/issues/32#issuecomment-263821705 ๋˜๋Š”
์Šค๋ ˆ๋“œ๋ฅผ ์Œ์†Œ๊ฑฐ
AA2nC7YRPNChZdEOx9c1N3pBJNbr0KW3ks5rDT5XgaJpZM4HN5ze>.

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/nrk/predis/issues/32#issuecomment-263853786 ๋˜๋Š” ์Œ์†Œ๊ฑฐ
์Šค๋ ˆ๋“œ
https://github.com/notifications/unsubscribe-auth/AApvTxieAw1-Jfa6NvXJbwKTW8VP9rgfks5rDWFYgaJpZM4HN5ze
.

๋‚˜๋Š” ๊ฑฐ์˜ 1๋…„ ํ›„์— ์—ฌ๊ธฐ๋กœ ๋Œ์•„์™€์„œ ๋…ผํ‰์„ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์†Œ์ผ“ ์„ค์ •์ด ๋ณ€๊ฒฝ๋˜๋ฉด Composer๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(ํŒจํ‚ค์ง€ ์„ค์น˜/์—…๋ฐ์ดํŠธ).

ํŒจํ‚ค์ง€๊ฐ€ ๊ตฌ์„ฑ ์„ค์ •์„ ์กด์ค‘ํ•˜์ง€ ์•Š๊ณ  PHP์˜ ๊ธฐ๋ณธ๊ฐ’์„ ๋ฌด์‹œํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ์ด ๊ธ€์„ ์ฝ๊ณ  ํ•ด๊ฒฐ์ฑ…์„ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ์ด ๋Œ“๊ธ€์„ ๋‚จ๊ฒจ์ฃผ์„ธ์š”!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰