设置简单:
我有以下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和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以便我可以修复一些事情.
我正在使用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) 我正在使用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控制台中看不到任何内容.
我错过了什么?
我在探讨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报告的信息在对象中,或者它是否仅在请求生命周期的其余部分被锁定?(实际使用这是零,我只是好奇)
根据关于固定工具栏设置的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) 有人碰巧知道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文件更清晰的界面.
Propel使用Peer
类和doctrine使用Table
类作为操作相应对象和对象属性的方法,而不必使用static
方法污染实际对象.
粗略地浏览了laravel(雄辩)文档之后,我没有看到任何雄辩提供相同Peer
或Table
类似功能的东西.我的问题是,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'类之间的分离很重要,因为对象不应该知道如何实例化也不应该自己保湿.
有人知道实现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.
我正在编写一个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值.有点凌乱,寻找更优雅的方法.