ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: bugreport: при чтении из memcached препендятся случайные символы


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: bugreport: при чтении из memcached препендятся случайные символы
  • From: "Alexey Kovyrin" <alexey@xxxxxxxxxxx>
  • Date: Tue, 5 Jun 2007 09:30:54 +0300
  • Dkim-signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth; b=rDPvwGWgZ52I9+aikcJiSKV5AoJdeaf/w3XflzvSxTsZM0EmqEuO43uYL88PdrexkH2E//F6wcgYdJ4aDE2DCQylzzU3oHf5zHdjW+cAEZ+UHVBFIoSkkuQr4ibU9jLYJtJpA2moMPdG0b2K8zzhI2mvOgRO1+evJhxuGWKLvaM=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:sender:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth; b=WcE/OJvJK0zqpSE/fI+QpZEk/Zc9k/g1dS4vGi7D0UGS8inMRGQqv8RB/ZcVyNsINEPKODsDZwyzFBjZWdyvdFIAFd7blZEyR5nkN6ZYPh8fdDKHy+QmtL2y1YU26FSgnjiR5vrdVhhPhOQfAGyIiBfUUNlfjAlNbZsLtj3g02c=
  • In-reply-to: <c64ad04e0706041014j111db9d6w2b8118c49ccb9347@xxxxxxxxxxxxxx>
  • References: <E848E9BE34F3DA45BB56B5BEEC33204B0275E0FC@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <c64ad04e0706041014j111db9d6w2b8118c49ccb9347@xxxxxxxxxxxxxx>

On 6/4/07, TDz TDz <tdz@xxxxxxxxxxxx> wrote:
В RoR есть вроде спец опция отключающая его механизмы оптимизации работы с
мемкешд после чего он должен писать без выкрутасов. Дебагали след образом -
мемкеш демон запущен с -vv чтоб видеть запросы и ответы, запросы давали
правда вместо telnet по nc вроде. В общем получается что nginx выдаёт
приблизительно то же что и nc, попробую ковырять API рубивское

Решение:

1. Скопировать memcache_util.rb в lib

2. добавить require RAILS_ROOT + '/lib/memcache_util.rb'  в environment.rb
до CACHE = MemCache.new

3. поправить memcache_util

def self.get(key, expiry = 0, raw = false)
   start_time = Time.now
   value = CACHE.get key, raw
   elapsed = Time.now - start_time
   ActiveRecord::Base.logger.debug('MemCache Get (%0.6f)  %s' % [elapsed, key])
   if value.nil? and block_given? then
     value = yield
     put key, value, expiry
   end
   value
 rescue MemCache::MemCacheError => err
   ActiveRecord::Base.logger.debug "MemCache Error: #{err.message}"
   if block_given? then
     value = yield
     put key, value, expiry
   end
   value
 end

 ##
 # Sets +value+ in the cache at +key+, with an optional +expiry+ time in
 # seconds.

 def self.put(key, value, expiry = 0, raw = false)
   start_time = Time.now
   CACHE.set key, value, expiry, raw
   elapsed = Time.now - start_time
   ActiveRecord::Base.logger.debug('MemCache Set (%0.6f)  %s' % [elapsed, key])
   value
 rescue MemCache::MemCacheError => err
   ActiveRecord::Base.logger.debug "MemCache Error: #{err.message}"
   nil
 end

4. Теперь юзать для страниц Cache.get("Action:#{request.request_uri}",
0, true) и Cache.put("Action:#{request.request_uri}", response.body,
0, true)

Внимание на последний параметр. Для всего остального последний
параметр не передавать, оно false поставит.

that's all

--
Alexey Kovyrin
http://kovyrin.info/


 




Copyright © Lexa Software, 1996-2009.