每个人都知道 PHP 上的 memcache 有两个扩展:
您可以像这样使用 PHP 扩展的 memcache 作为 PHP 的 session 处理程序:
session.save_handler = memcache
session.save_path = "tcp://serv01:11211,tcp://serv02:11211,tcp://serv03:11211"
或者您可以像这样使用 memcached:
session.save_handler = memcached
session.save_path = "serv01:11211,serv02:11211,serv03:11211"
但是如何给memcached设置其他参数比如:
在 PHP 中我会这样做:
$cache = new Memcached();
$cache->addServer('serv01', 11211);
$cache->addServer('serv02', 11211);
$cache->addServer('serv03', 11211);
$cache->setOption(Memcached::OPT_HASH, Memcached::HASH_MD5);
$cache->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
$cache->setOption(Memcached::OPT_CONNECT_TIMEOUT, 150);
$cache->setOption(Memcached::OPT_RETRY_TIMEOUT, 0);
但到目前为止,我还没有找到任何文档或示例来说明如何在 session_handler 使用这些变量时设置这些变量。
最佳答案
在查看了 PECL 扩展和 libmemcached 本身的源代码后,我终于在 memcached 扩展作者的博客评论中找到了答案。
http://zmievski.org/2009/01/new-memcached-extension
我引用以防有一天他的博客消失了:
Andrei said: @Ash, the session save path syntax is not quite the same as the other memcache extension. Try:
session.save_path="127.0.0.1:11211"
Ash Searle said: Is there any documentation for the syntax – i.e. does it handle multiple servers and optional parameters like the earlier memcache implementations? (e.g. save_path="127.0.0.1:11211?persistent=1&timeout=1&retry_interval=15")
Andrei said: @Ash, no, it’s not that advanced. For now, the syntax is the default one that libmemcached parser supports: basically, a comma-separated list of hostname:port entries, where :port is optional.
或
Rich Choy said: Is there a reference on the Web that explains each connection parameter that appears after host:port? For example what exactly does “timeout=1″ mean?
Andrei said: @Rich, which extension are you using? :) Mine doesn’t support those extra parameters, you must be talking about pecl/memcache one.
和
Frank Orson said: 1) Does pecl/memcached support UDP on the client? I could not find any info about this. I know that pecl/memcache 3.0.4 supports it.
2) Does pecl/memcached have failover support in the client?
Andrei said: Frank, I’m working on next version (2.0) of the memcached extension. It’ll have UDP support and replication (failover).
如果您查看版本 2 的源代码,您会看到例如您可以在 save_path 字符串中附加“PERSISTENT=”和“--SERVER”((我不知道它会如何使用)
关于apache - PHP session 和 memcacheD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6668803/
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵
更新:当输入“passenger-memory-stats”时,我显示:---Passengerprocesses---Processes:0我该如何解决这个问题?为什么即使我在httpd.conf中添加它并重新启动apache,passenger也不会启动?我无法让PhusionPassenger在服务器上运行RubyonRails。我已经按照Phusion网站上的所有说明安装了passenger并修改并创建了ApacheVirtualHost以指向新目录并验证所有.conf文件都已成功加载。还加载了httpd-Mpassenger_module。我还在本地主机上成功运行了Passe
我有一个相当大的Rails应用程序,它在单独的服务器上使用memcached作为其缓存存储。问题是我在生产环境中随机出现错误,似乎表明memcached正在返回不正确的对象。例子:在这个例子中,current_site是一个辅助方法,它访问Site模型上的一个方法,该模型使用Rails.cache来缓存模型ActionView::TemplateErrorinListingsController#editundefinedmethod`settings'for#Online#12ofapp/views/layouts/site.html.erb9:10:11:12:13:"/>14:1
我正在寻找一个rubygem(或rails插件),它以与ActiveRecord抽象SQL细节相同的方式抽象出memcached的细节。我不是正在寻找有助于在memcached中缓存ActiveRecord模型的东西。我确信大约有4215个gem可以帮助解决这个问题。理想情况下,我希望能够执行以下操作:classApple然后能够做类似的事情:my_apple=Apple.find('somememcachedkey')这将在memcached中查找此类的JSON表示并将其反序列化。我也许还能做类似的事情:my_apple.color="red"#persistchangesbac
我的带有apache+passenger的Rails应用程序一开始工作得很好。但是,运行一段时间后,遇到如下错误:Theapplicationspawnerserverexitedunexpectedly:Unexpectedend-of-filedetected.我查看了apache的错误日志,发现了这个错误:../gems/passenger-3.0.7/lib/phusion_passenger/utils.rb:716:[BUG]Segmentationfault似乎乘客有内存问题。有人可以帮忙吗?谢谢。 最佳答案 最可能的
虽然我们可以用webrick或mongrel部署它 最佳答案 大多数Ruby应用程序服务器只会运行一个Ruby进程(Ruby有一个全局解释器锁,这使得多线程变得毫无意义),这意味着它一次只能处理一个请求。至少可以说,这不会给你很好的表现。有两种解决方法:运行多个Ruby应用程序服务器并在它们前面放置一个负载平衡器或反向代理,例如Nginx或Apache在一堆Mongrels或瘦服务器前面(您运行的进程数反射(reflect)了您将能够并行处理的请求数)。或者你运行Passenger,它是一个Apache或Nginx模块,管理一个应用
我对这个架构有点困惑。在我正在进行的一个项目中,Unicorn被选为Rails服务器。它放在Nginx网络服务器后面。据我了解,Unicorn是功能齐全的Web服务器,我们不打算在同一服务器实例上托管任何其他Rails应用程序。所以我的问题是:在链中添加附加层有什么好处:client->nginx->unicorn->unicornworker 最佳答案 Unicorn不是为处理“慢客户端”而设计的。您可以在PHILOSOPHY中阅读更多相关信息帮助文件:Mostbenchmarkswe’veseendon’ttellyouthis
假设您有一个显示最新帖子的页面片段,并且您在30分钟后将其过期。我在这里使用Rails。30.minutes)do%>...显然,如果该片段存在,您不需要进行数据库查找来获取最新的帖子,因此您也应该能够避免这种开销。我现在正在做的是Controller中类似这样的东西,它似乎可以工作:unlessRails.cache.exist?"views/recent_posts"@posts=Post.find(:all,:limit=>20,:order=>"updated_atDESC")end这是最好的方法吗?安全吗?我不明白的一件事是为什么片段的键是“recent_posts”,而稍后
我正尝试着手编写一些RubyonRails应用程序并在Mongrel上取得了成功,但是,我想将我的应用程序部署到Windows上的Apache2.2实例吗?我发现的所有教程似乎都已过时,并且适用于旧版本的Apache/Rails。有人知道为RubyonRails应用程序配置Apache2.2的最新好教程吗? 最佳答案 编辑:至少在Win出现PhusionPassenger之前,Apache+Mongrel是可行的方法。您可以在没有Mongrel的情况下使用Apache+FastCGI,但在实际负载下您会遇到(更多)僵尸进程和(更多)
我在Windows上安装了apache2.2。我正在尝试同时提供颠覆(/svn)和redmine(/redmine)。我的svn使用此配置运行良好:DAVsvnSVNParentPathC:/svn_repository...这很好用——我的svn用户可以点击http://mybox/svn就好了。现在我想为Rails应用程序(RedMine)添加另一个目录:我遵循了thisquestion中的建议设置杂种服务器并让apache代理客户端连接到它。如果我将它设为根目录,它工作正常——但我在将它设为子目录时遇到了问题:ProxyPasshttp://localhost:3000/Prox