小编Mik*_*ell的帖子

Twitter - twemproxy - memcached - 重试不按预期工作

设置简单:

  • 1个运行twemproxy的节点(vcache:22122)
  • 运行memcached的两个节点(vcache-1,vcache-2)都在11211上监听

我有以下twemproxy配置:

default:
  auto_eject_hosts: true
  distribution: ketama
  hash: fnv1a_64
  listen: 0.0.0.0:22122
  server_failure_limit: 1
  server_retry_timeout: 600000 # 600sec, 10m
  timeout: 100
  servers:
    - vcache-1:11211:1
    - vcache-2:11211:1
Run Code Online (Sandbox Code Playgroud)

twemproxy节点可以解析所有主机名.作为测试的一部分,我取消了vcache-2.理论上,每次尝试与vcache:22122接口时,twemproxy都会联系池中的服务器以方便尝试.但是,如果其中一个缓存节点关闭,那么twemproxy应该从池中"自动弹出"它,因此后续请求不会失败.

由应用程序层决定是否使用vcache:22122尝试失败的接口是由于基础结构问题,如果是,请再试一次.但是我发现在重试时,正在使用相同的故障服务器,因此不会将后续尝试传递给已知良好的缓存节点(在本例中为vcache-1),而是将它们传递给弹出的缓存节点(vcache) -2).

这是尝试重试的php代码片段:

....

// $this is a Memcached object with vcache:22122 in the server list

$retryCount = 0;

do {

    $status = $this->set($key, $value, $expiry);

    if (Memcached::RES_SUCCESS === $this->getResultCode()) {

        return true;
    }


} while (++$retryCount < 3);

return false;
Run Code Online (Sandbox Code Playgroud)

- 更新 -

链接到Github上打开的问题以获取更多信息:问题#427

php memcached caching twemproxy

24
推荐指数
1
解决办法
895
查看次数

php.ini是不存在的加载配置文件(无)

我成功编译了php和apache,没有指定php配置文件的目录.我想添加梨功能,但似乎没有任何地方的php.ini.
在我的phpinfo中,它说

配置文件(php.ini)路径/ usr/local/apache2/php/lib
加载配置文件(无)
扫描此目录以获取其他.ini文件(无)
解析其他.ini文件(无)

我去了/ usr/local/apache2/php/lib目录,确实没有.我也搜索了php.ini,并没有得到任何结果.我需要在php.ini中改变一些东西,我不知道如果没有一个php甚至可以工作.我只是想知道我是否需要使用config目录重新编译php,以及如何查找/获取php.ini以便我可以修复一些事情.

php linux

22
推荐指数
3
解决办法
4万
查看次数

ios 9 - xcode 7 - SFSafariViewController - 图像上传 - 相机黑屏

我正在使用SFSafariViewController,并遇到以下问题:向用户显示上传图像按钮,单击时设备正确显示多个选项,其中一个是相机.当用户选择摄像机时,它会加载摄像机,但屏幕为黑色,操作按钮显示为灰色.但是,如果用户选择库,则会正确上载所选图像.

我确认该应用已启用相机权限.

我试着实现这里这里找到的修复,但无济于事.

其他人遇到这个问题?

码:

import UIKit
import SafariServices

class ViewController: UIViewController, SFSafariViewControllerDelegate
{
    private var urlString:String = "https://example.com"

    override func viewDidLoad()
    {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func viewDidAppear(animated: Bool)
    {
        super.viewDidAppear(animated)

        let svc = SFSafariViewController(URL: NSURL(string: self.urlString)!)

        svc.delegate = self

        self.presentViewController(svc, animated: true, completion: nil)
    }

    func safariViewControllerDidFinish(controller: SFSafariViewController) {
        super.dismissViewControllerAnimated(true, completion: nil)
    }

    override func didReceiveMemoryWarning()
    {
        super.didReceiveMemoryWarning()
        // Dispose of any …
Run Code Online (Sandbox Code Playgroud)

xcode camera ios swift sfsafariviewcontroller

13
推荐指数
1
解决办法
2339
查看次数

WKWebView - Javascript确认和警报无法正常工作

我正在使用WKWebView打开example.com,在那里我有一个测试链接,它应该打开一个JS警报,但我无法让它显示在设备上,它只有在我查看网站时才有效来自浏览器.

我正在使用WKUIDelegate,并将这段代码添加到ViewController.swift文件中:

func webView(webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: (() -> Void)) {

    NSLog("Hello")
}
Run Code Online (Sandbox Code Playgroud)

当我点击产生JS警报的链接时,我在XCode控制台中看不到任何内容.

我错过了什么?

javascript webview ios swift wkwebview

13
推荐指数
3
解决办法
2万
查看次数

使用数字键作为对象转换数组

我在探讨PHP的构建机制,并在将数组作为对象进行投射时遇到了一个奇怪的情况

$o = (object) array('1'=>'/foo/bar');   
$o = new stdClass();
var_dump($o);
Run Code Online (Sandbox Code Playgroud)

据我了解,PHP属性需要使用与PHP变量相同的规则声明.这是一个有效的变量名称,以字母或下划线开头,后跟任意数量的字母,数字或下划线.但是,上面的代码产生以下输出

object(stdClass)#1 (1) {
  [1]=>
  string(8) "/foo/bar"
}
Run Code Online (Sandbox Code Playgroud)

当你试图访问对象中的信息时,它变得非常奇怪.

var_dump($o->1);        // parse error
var_dump($o->{'1'});        // NULL 
var_dump(get_object_vars($o));  //array(0) { }
Run Code Online (Sandbox Code Playgroud)

无论如何都要获取var_dump报告的信息在对象中,或者它是否仅在请求生命周期的其余部分被锁定?(实际使用这是零,我只是好奇)

php arrays casting

12
推荐指数
2
解决办法
4994
查看次数

Redactor - 修复了不适用于移动设备的工具栏

根据关于固定工具栏设置的Redactor 文档,我可以将toolbarFixed标志传递为true,并且当用户向下滚动时工具栏应保持在视口的顶部,但这不适用于移动设备.

我怀疑它为什么不适用于移动设备是:源代码正在侦听滚动事件,在移动设备上它将是一个拖动事件.有没有遇到过这个?如果是这样,你的工作是什么?

目前正在运行10.1.3版

怀疑线:

$(this.opts.toolbarFixedTarget).on('scroll.redactor.' + this.uuid, $.proxy(this.toolbar.observeScroll, this));
Run Code Online (Sandbox Code Playgroud)

javascript mobile jquery redactor

12
推荐指数
1
解决办法
378
查看次数

1.2的学说文档

有人碰巧知道1.x的Doctrine文档发生了什么变化?浏览他们的官方文档页面(必须滚动到1.2),然后单击任何文档链接会产生404.我还注意到几个谷歌搜索1.x文档正在做同样的事情.

Doctrine最近是否更改了doc结构而忘记更新?或者这是他们告诉我们升级到2.x的方式吗?

- 更新(3.9.2012) -

似乎Doctrine正在将他们的文档移动到GitHub.OP中提到的一些链接现在解析为https://github.com/doctrine/doctrine1-documentation.

- 更新(3.20.2012) -

看起来有些文档已移植到他们的ReadTheDocs门户网站.比浏览原始.txt文件更清晰的界面.

documentation orm doctrine doctrine-1.2

10
推荐指数
1
解决办法
2959
查看次数

Laravel(Eloquent)表|| 同等对等

Propel使用Peer类和doctrine使用Table类作为操作相应对象和对象属性的方法,而不必使用static方法污染实际对象.

粗略地浏览了laravel(雄辩)文档之后,我没有看到任何雄辩提供相同PeerTable类似功能的东西.我的问题是,laravel(或eloquent)是否为这些类提供了命名空间,或者我只是使用Table并让autoloader处理剩下的事情?

// Example use of a table class in doctrine 1.2
$user = UserTable::getInstance()->findById(1);
Run Code Online (Sandbox Code Playgroud)

- 更新1 -

Layman关于如何使用doctrine表类的示例:

class UserTable
{
    public static function getInstance()
    {
        return Doctrine_Core::getTable('User');
    }

    public function linkFoo($userId, array $foos)
    {
        $user = $this->findById($userId);

        foreach ($foos as $foo) {

            $user->foo = $foo;

            $user->save();
        }
    }
}

// SomeController.php
executeSaveFoo()
{
    UserTable::getInstance()->linkFoo($this->getUser(), array('foo1', 'foo2'));
}
Run Code Online (Sandbox Code Playgroud)

doctrine表类的目的是为不应该在控制器中的各个对象提供动作的api,在上面的例子中,linkFoo类将链接提供给相应的用户对象.

我觉得对象和'table'类之间的分离很重要,因为对象不应该知道如何实例化也不应该自己保湿.

php propel doctrine laravel eloquent

9
推荐指数
1
解决办法
280
查看次数

Android - Marshmallow - Webview Library

有人知道实现Marshmallow运行时权限模型的可靠webview库吗?必须支持相机访问.

我找到了以下示例:https://github.com/GoogleChrome/chromium-webview-samples,但它们已超过2年,并且未实现运行时权限模型.

那么我发现了各种各样的库:https://github.com/teegarcs/Runtime_Permissions/blob/master/app/src/main/java/com/captech/runtime/MainActivity.java,它们实现了运行时模型,但是不要使用webview.

android webview

9
推荐指数
1
解决办法
1827
查看次数

Linux - Bash - 获取$ releasever和$ basearch值?

我正在编写一个bash脚本来使用reposync从远程repos中提取包,所以我可以将我的节点指向本地.因此,我试图保持本地repo configs尽可能与usptream repo configs相似,如下所示:

# upstream
baseurl=http://mirror.freedomvoice.com/centos/$releasever/os/$basearch/

# local
baseurl=http://user:password@repo.example.com/centos/stable/$releasever/os/$basearch/
Run Code Online (Sandbox Code Playgroud)

在bash脚本中,是否有更简洁的方法来获取$ releasever和$ basearch值?我在考虑做以下事情:

yum_metadata=$(yum version nogroups)
Run Code Online (Sandbox Code Playgroud)

哪个回报:

Loaded plugins: versionlock Installed: 6/x86_64 360:6167019baac7e76f94c26320424dc41a7f046a70 version
Run Code Online (Sandbox Code Playgroud)

然后regexing为6/x86_64值.有点凌乱,寻找更优雅的方法.

linux bash yum

8
推荐指数
1
解决办法
2万
查看次数