小编Tom*_*Tom的帖子

当我添加新索引时,为什么MySQL中索引的基数保持不变?

我在我的一个MySQL数据库表中添加了一个FULLTEXT索引,如下所示:

ALTER TABLE members ADD FULLTEXT(about,fname,lname,job_title);
Run Code Online (Sandbox Code Playgroud)

问题是使用phpmyadmin我可以看到我的新索引的基数只有1.这是否意味着永远不会使用索引?

我运行了一个analyze table命令,但似乎没有做任何事情.

analyze table members
Run Code Online (Sandbox Code Playgroud)

索引字段的相应类型是varchar(100),varchar(100),text,varchar(200),使用的引擎是MyISAM,表有大约30,000行,都是唯一的.我的MySQL版本是5.0.45.

难道我做错了什么?

mysql indexing full-text-search cardinality

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

如何更改Amazon S3中对象的http响应代码

我有一个在Amazon S3上托管的网页,但我不想要http响应代码200.该页面是一个维护页面,当我将主网站关闭进行维护时,我将重定向流量.

我希望Amazon S3页面包含一个响应头:

HTTP/1.1 503 Service unavailable
Run Code Online (Sandbox Code Playgroud)

亚马逊能够向S3对象添加一些元数据,但http状态代码没有任何内容.

可能吗?

amazon-s3 http-response-codes

6
推荐指数
1
解决办法
1848
查看次数

如何使用kubernetes go-client获得与kubectl相同的Pod状态信息

使用kubernetes go-client(k8s.io/client-go/kubernetes),我知道如何获得,pod.Status并且找到了pod.Status.Phase有用的(docs)。例如,我可以使用以下命令输出所有Pod的Pod Status Phase:

    ...
    api := clientset.CoreV1()
    pods, err := api.Pods("").List(metav1.ListOptions{})
    for i, pod := range pods.Items {
        podstatusPhase := string(pod.Status.Phase)
        podCreationTime := pod.GetCreationTimestamp()
        age := time.Since(podCreationTime.Time).Round(time.Second)

        podInfo := fmt.Sprintf("[%d] Pod: %s, Phase: %s , Created: %s, Age: %s", i, pod.GetName(), podstatusPhase, podCreationTime, age.String())
        fmt.Println(podInfo)
    }
Run Code Online (Sandbox Code Playgroud)

然而,phase在一点点简单的,它永远只能显示5个值(PendingRunningSucceededFailedUnknown)。我希望获得与kubectl get pods状态”列中相同的信息,例如:

$ kubectl get pods

NAME                                        READY …
Run Code Online (Sandbox Code Playgroud)

go kubernetes kubernetes-go-client

6
推荐指数
2
解决办法
216
查看次数

如何为每个JQuery UI Slider句柄使用不同的图像

我正在使用一个JQuery UI滑块,它有两个手柄(也就是范围滑块).我知道如何设置第一个句柄的样式:

.ui-slider-horizontal .ui-slider-handle {background: white url(https://stackoverflow.com/content/img/so/vote-arrow-down.png) no-repeat scroll 50% 50%;}
Run Code Online (Sandbox Code Playgroud)

但是我如何以不同的方式设计第二个手柄?

使用Firebug我可以看到Jquery没有唯一标识每个句柄:

<div id="hourlyRateSlider" class="ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all">
 <div class="ui-slider-range ui-widget-header" style="left: 26%; width: 46%;"/>
 <a class="ui-slider-handle ui-state-default ui-corner-all" href="#" style="left: 26%;"/>
 <a class="ui-slider-handle ui-state-default ui-corner-all" href="#" style="left: 72%;"/>
</div>
Run Code Online (Sandbox Code Playgroud)

所以我想我必须使用CSS子选择器,这可能是跨浏览器问题.或者我可以使用一些JQuery技巧将CSS类添加到第二个句柄?有人以前整齐地做过这件事吗?

css jquery slider

5
推荐指数
1
解决办法
7818
查看次数

MySQL - 如何有效地获取ID最低的行?

是否有更快的方法来更新匹配特定条件的MySQL表的最旧行,而不是使用ORDER BY id LIMIT 1以下查询中的情况?

UPDATE mytable SET field1 = '1' WHERE field1 = 0 ORDER BY id LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

注意:

  • 假设主键是,id并且还有一个索引field1.
  • 我们正在更新一行.
  • 我们没有严格更新最旧的行,我们正在更新与条件匹配的最旧行.
  • 我们想要更新最旧的匹配行,即最低的id,即FIFO队列的头部.

问题:

  • ORDER BY id必要吗?MySQL如何默认订购?

现实世界的例子

我们有一个DB表用于电子邮件队列.当我们要将电子邮件排队以发送给我们的用户时,会添加行.行由cron作业删除,每分钟运行一次,在该分钟内尽可能多地处理并每行发送1封电子邮件.

我们计划放弃这种方法,并使用GearmanResque之类的东西来处理我们的电子邮件队列.但与此同时,我有一个问题,我们如何有效地标记队列中最旧的项目进行处理,即具有最低ID的行.此查询完成工作:

mysql_query("UPDATE email_queue SET processingID = '1' WHERE processingID = 0 ORDER BY id LIMIT 1");
Run Code Online (Sandbox Code Playgroud)

但是,由于扩展问题,它出现在mysql慢日志中很多.当表有500,000行时,查询可能需要10秒以上.问题是这个表自首次引入以来已经大量增长,现在有时有50万行,开销为133.9 MiB.例如,我们每天INSERT 6000个新行可能180次,并且删除大致相同的数字.

为了阻止查询出现在慢速日志中,我们删除了ORDER BY id以阻止整个表格的大规模.即

mysql_query("UPDATE email_queue SET processingID = …
Run Code Online (Sandbox Code Playgroud)

mysql message-queue database-performance

5
推荐指数
1
解决办法
1184
查看次数

Capistrano 配方仅在需要时自动运行部署:清理

我们每天使用 capistrano (实际上是webistrano)进行 20 多次部署,我们遇到了一个问题,即我们服务器上的磁盘空间充满了旧的部署文件夹。

我时不时地运行deploy:cleanup任务来清理所有部署(它保留最后一个:keep_releases,当前设置为 30)。我想自动化清理。

一种解决方案是将以下内容添加到配方中,以便在每次部署后自动运行清理:

after "deploy", "deploy:cleanup"
Run Code Online (Sandbox Code Playgroud)

但是,我不想在每次部署后都执行此操作,我想将其限制为仅当之前的部署数量达到阈值(例如 70)时。有谁知道我该怎么做?


想法:

  • Capistrano 是否提供了一个变量来保存先前部署的数量?
    • 如果没有的话有谁知道计算方法吗?IEset :num_releases, <what-can-I-put-here-to-count-previous-deployments>
  • 有没有办法进行拉皮条,deploy:cleanup以便它使用最小阈值,即如果< :max_releases以前的部署(与:max_releases不同:keep_releases)则退出。
  • 可以except使用关键字吗?即类似的东西:except => { :num_releases < 70}

ruby deployment capistrano webistrano

5
推荐指数
1
解决办法
3381
查看次数

由于最大执行时间致命错误,PHP cron作业提前终止

我有一个PHP cron作业,运行29分钟后失败.log(/var/log/php_errors.log)中的错误是:

[01-Mar-2012 00:32:57 UTC] PHP Fatal error: Maximum execution time of 60 seconds exceeded in /path/file.php on line 2079
Run Code Online (Sandbox Code Playgroud)

触发cron的crontab条目是:

00 00 * * * /usr/bin/php /path/file.php
Run Code Online (Sandbox Code Playgroud)

从我的研究中我不认为这与max_execution_time配置设置有关,因为:

  1. 我知道它运行了29:18分钟(即错误信息超过60秒).
  2. PHP文档 - 从命令行运行PHP时,默认设置为0.

问:为什么脚本会提前终止?


笔记:

该脚本非常繁重,并且运行了数千个数据库查询,但我正在运行top并且CPU负载不高.

错误日志中的行是一个mysql_query调用:

$sql = "SELECT SUM(amount) FROM mytab WHERE mem = '$id' AND validto > '$now'";
$res = mysql_query($sql);
Run Code Online (Sandbox Code Playgroud)
> php -v
PHP 5.3.10 (cli) (built: Feb  2 2012 17:34:38) 
Copyright (c) 1997-2012 The PHP Group …
Run Code Online (Sandbox Code Playgroud)

php cron fatal-error

5
推荐指数
1
解决办法
9177
查看次数

如何输出IEEE-754格式的整数作为浮点数

我有一个无符号长整数值,表示使用IEEE-754格式的浮点数.在C++中以flo​​at形式打印它的最快方法是什么?

我知道一种方法,但我想知道在C++中是否有一个方便的实用程序会更好.

我知道的方式示例如下:

union
{
    unsigned long ul;
    float f;
} u;

u.ul = 1084227584; // in HEX, this is 0x40A00000

cout << "float value is: " << u.f << endl;
Run Code Online (Sandbox Code Playgroud)

(这打印出"浮动值为:5")

c++ data-conversion ieee-754

4
推荐指数
1
解决办法
5707
查看次数

使用 Kubernetes go-client 向 Pod 添加标签的最短方法是什么

我有一个演示 golang 程序来列出没有特定标签的 Pod。我想修改它,以便它还可以为每个 pod 添加标签。

(我使用的是 AWS 托管的 Kubernetes 服务 EKS,因此有一些特定于 EKS 的样板代码)

package main

import (
    "fmt"
    eksauth "github.com/chankh/eksutil/pkg/auth"
    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

func main() {
    cfg := &eksauth.ClusterConfig{ClusterName: "my_cluster_name"}

    clientset, _ := eksauth.NewAuthClient(cfg)
    api := clientset.CoreV1()

    // Get all pods from all namespaces without the "sent_alert_emailed" label.
    pods, _ := api.Pods("").List(metav1.ListOptions{LabelSelector: "!sent_alert_emailed"})

    for i, pod := range pods.Items {
        fmt.Println(fmt.Sprintf("[%2d] %s, Phase: %s, Created: %s, HostIP: %s", i, pod.GetName(), string(pod.Status.Phase), pod.GetCreationTimestamp(), string(pod.Status.HostIP)))

        // Here I want to add …
Run Code Online (Sandbox Code Playgroud)

go kubernetes kubernetes-go-client

4
推荐指数
1
解决办法
6849
查看次数

PHP $ _SERVER ['SERVER_ADDR']变量始终返回127.0.0.1

我们有多个负载均衡的webserver机器运行相同的PHP webapp(LAMP),我想在每个服务器上运行稍微不同的代码(用于测试目的).我希望使用$_SERVER['SERVER_ADDR']超级全局来做这样的事情:

if ($_SERVER['SERVER_ADDR'] == 'XXX.XXX.XXX.XXX') {
  echo "Do one thing";
} elseif ($_SERVER['SERVER_ADDR'] == 'YYY.YYY.YYY.YYY') {
  echo "Do something else";
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用,因为两台机器都设置$_SERVER['SERVER_ADDR']为' 127.0.0.1 '.如何配置它们以便$_SERVER['SERVER_ADDR']设置为其公共IP地址?

我猜这个问题可能与某些事情有关,/etc/hosts所以对于参考,它目前看起来像这样:

127.0.0.1       localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
XXX.XX.XX.XX    blahblah
Run Code Online (Sandbox Code Playgroud)

更新中...

哎呀!我忽略了在Web服务器前面考虑nginx反向代理.由于nginx conf中的以下行,所有到这些Web服务器的流量都来自nginx:

location / {
    root                  /var/www/staging/current;
    proxy_pass            http://localhost:8880;
}
Run Code Online (Sandbox Code Playgroud)

php linux lamp superglobals server-farm

3
推荐指数
1
解决办法
9153
查看次数