接到骗子来电 85928807

0

刚接到一个电话:+000196852202,说我的工商银行信用卡在新世界消费9000多,让我尽快去银行缴费。有问题致电85928807,跟崇文区XXX行联系。

你MLGB,哥没有工行信用卡,你个SB。

骗子,各位小心!

mysql 持久连接 mysql_connect mysql_pconnect

0

在某些场合,mysql_pconnect( ) 是不适用的。

——————————————————————————–

状况一:

使用 1 部 web server 与 1 部 MySQL server(两者可能同在一部主机上),而 web server 固定只对 MySQL server 上的某一个数据库进行存取动作。

因为每次存取数据库时,都是由 web 那边使用同一账号对 MySQL 上的同一数据库作业,若我们将 MySQL 与 web server 的「同时联机数」都调整为 200,就好像 MySQL 这边一直有 200 位「服务生」,随时等着接待来自 web 的 200 位「顾客」似的。而且「顾客」离开之后,「服务生」也不下场休息,时时都站在门口等着接待下一个「顾客」。

在这种情况下,您只要注意将 MySQL 的「同时联机数」调得比 web server 的高或相等,就会发现使用 mysql_pconnect( ) 是个不错的选择。
——————————————————————————–

状况二:

使用 1 部 web server 与 1 部 MySQL server(两者可能同在一部主机上),而 web server 会对 MySQL server 上的两个数据库进行存取动作。

从 web server 那边提出数据存取需求时,有时是针对第 1 个数据库(DB1),有时则是针对第 2 个数据库(DB2)。若我们也将 MySQL 与 web server 的「同时联机数」都调整为 200,这样一来,就好像 MySQL 这边有 200 位「服务生」,但同时经营两个「吧台」(DB1 与 DB2),而「顾客」可能多达 200 位。

一开始,DB1 这个「吧台」比较热门,MySQL 派了 150 位「服务生」上场接待;同样地,当「顾客」离开之后,这 150 位「服务生」仍守着 DB1 而不下场休息。后来,DB2 那边也热闹起来了,「顾客」越来越多,MySQL 得加派「服务生」上场,有几个能派?答案是 50 个!

为什么「服务生」的人力调配会捉襟见肘?那是因为 web 那边使用了 mysql_pconnect( ) 来建立联机。「服务生」一开始被指定到哪个「吧台」工作,就会持续在那边停留,绝不「转台」。
——————————————————————————–

请注意,当使用持续性的联机时,每个已建立的联机只为来自同一部 web server、使用同一组账号,且存取同一数据库的使用者服务。

如此一来,假设每部 web server 的「同时联机数」都是 200,而且同时使用 2 部 web server 会怎么样呢?从 web1 来了 50 个「顾客」,先是到 DB1 走一趟,接着再到 DB2 晃一圈,这样需要多少「服务生」接待他们?100 个(web1->DB1: 50 web1->DB2: 50)!又从 web2 来了 50 个「顾客」,也做了同样的动作(web2->DB1: 50 web2->DB2: 50)。在此之后,还有「服务生」是闲着的吗?后续若从 web1 或 web2 同时涌入多于 50 位「顾客」时,谁来应付他们?

倘若您使用的是像 Apache 这类的 multi-process web server(一个 parent process 协调一组 children processes 运作),某个 children process 建立的「持续联机」,是不能分享给其它 children process 来使用的(「服务生」只对先前接待过的「顾客」服务)。在这样的情况下,将会使得 MySQL 上闲置的 process 越积越多(很多「服务生」站在门口等着「老顾客」上门,而不理会「新顾客」)。
mysql_pconnect( ) 一定是最佳选择吗?我想未必尽然。
——– 两者之间的区别 ————–
mysql_pconnect() 和 mysql_connect() 非常相似,但有两个主要区别。
首先,当连接的时候本函数将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到,则返回此连接

标识而不打开新连接。
其次,当脚本执行完毕后到 SQL 服务器的连接不会被关闭,此连接将保持打开以备以后使用(mysql_close() 不会关闭由

mysql_pconnect() 建立的连接)。
可选参数 client_flags 自 PHP 4.3.0 版起可用。
此种连接称为”持久的”。
看到这里,写一条代码来测试一下

/*
* pconnect_test.php
*/

$link = mysql_pconnect(localhost, mysql_user, mysql_password)
or die(Could not connect: . mysql_error());
print (Connected successfully);

通过刷新网页的方式执行这条代码,发现每执行一次,mysql的进程数就增加一个。在这里我不禁有了疑问。上面说mysql_pconnect这个函

数的使用的时候,不是说”当连接的时候本函数将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到

,则返回此标识而不打开新连接”么?为什么我每刷新一次页面他就给我打开一个新的连接呢?

考虑到这有可能是PHP的bug,我到PHP的bug列表中找关于和too many connections 有关的条目。
相关的话题主要有三个,分别是

#11966        mysql_pconnect opens new connections with the same parameters
#26117        Persistent connection not reused
#13589        Persistent connections stay open and accumulate

描述比较长,我就不在这里贴,具体的内容你自己去看。重点主要是”当一个进程打开一个mysql的持续连接,只要该进程还存在,这个持续

的连接就不会断开,而且每一个进程会打开一个mysql的持续连接,而不能使用其他进程打开的持续连接”。

MySQL IN 条件语句 排序

0

有个场景,一个几万条记录的表,主键是 id,我想从表中取 id 为 30,20,80,40 的几条记录。

注意,30,20,80,40,是我预期的顺序,我希望 MySQL 按这样的顺序返回记录。

于是我这样写 SQL:

SELECT * FROM my_table WHERE id IN (30, 20, 80, 40);

结果是,他没有按我给的顺序返回。

怎么办?

查到了 FIELD() 函数。

FIELD(str,str1,str2,str3,…)
Returns the index (position) of str in the str1, str2, str3, … list. Returns 0 if str is not found.

把 SQL 语句改写为:

SELECT * FROM my_table WHERE id IN (30, 20, 80, 40) ORDER BY FIELD(id, 30, 20, 80, 40);

排序过程是:

把选出的记录的 id 在 FIELD 列表中进行查找,并返回位置,以位置作为排序依据。

这样的用法,会导致 Using filesort,是效率很低的排序方式。除非数据变化频率很低,或者有长时间的缓存,否则不建议用这样的方式排序。

把 MySQL 返回的结果,用 PHP 在内存中按 id 顺序重新排列,是个不错的优化方案。

sudo: sorry, you must have a tty to run sudo

0

I was recently working on a Perl script that would SSH to another server and run a sudo command on the remote server that was failing. The error that was received is below.

Error: sudo: sorry, you must have a tty to run sudo

The reason for this is an update along the way with sudo locked it down further by adding the below line to /etc/sudoers configuration file.

Defaults requiretty

To allow a remote script to login and run a command via sudo simply comment out that line as shown below.

# Commented out so remote script can login and run a command without a tty
# Defaults requiretty

I would suggest making a comment in the sudoers file along with the actual script that is running just in case there is another systems administrator that is tasked with working on this server at a later date. Now when your script runs it will not throw that error and should be able to run the remote command that was initially required.

MySQL 索引优化

2

表中包含 10 万条记录,有一个 datetime 类型的字段。

取数据的语句:

SELECT * FROM my_table WHERE created_at < '2010-01-20';

用 EXPLAIN 检查,发现 type 是 ALL, key 是 NULL,根本没用上索引。

可以确定的是,created_at 字段设定索引了。

什么原因呢?

用 SELECT COUNT(*) 看了一下符合 WHERE 条件的记录总数,居然是 6W 多条!!

难怪不用索引,这时用索引毫无意义,就好像 10 万条记录的用户表,有个性别字段,不是男就是女,在这种字段设置索引是错误的决定。

稍微改造一下上述语句:

SELECT * FROM my_table WHERE created_at BETWEEN '2009-12-06' AND '2010-01-20';

这回问题解决!

符合条件的记录只有几百条,EXPLAIN 的 type 是 range,key 是 created_at,Extra 是 Using where 。

自己总结个准则,索引的目的就是尽量缩小结果集,这样才能做到快速查询。

送别谷歌 Say Goodbye to Google

4

—————————————————————-

腾讯常州市网友 ミ王先生 .﹎ 1小时前
北京时间3月23日凌晨3时零3分,谷歌公司高级副总裁、首席法律官大卫德拉蒙德公开发表声明,再次借黑客攻击问题指责中国,宣布停止对谷歌中国搜索服务的“过滤审查”,并将搜索服务由中国内地转至香港。

—–走了还不忘说中国点毛病啊。。!这帮玩意。。.不是个东西

我只用百度。。

—————————————————————-

腾讯铁岭市网友 青青雨竹 1小时前
终于走了,以后电脑不用自动跳谷歌了

—————————————————————-

腾讯嘉峪关市网友 小磨猪(空) 1小时前
我一直用的百度,走就走吧,强扭的瓜不甜啊!

—————————————————————-

腾讯泸州市网友 我想死/huaix 1小时前
我用电脑很多年了!从来都拒绝很多流氓软件安装谷歌!我也从来就没用过谷歌!不知道有啥了不起!我需要的东西在其他网上也能找到!谷歌~请你离开中国吧!

—————————————————————-

腾讯北京市网友 天箭一号 1小时前
象这样和美国情报局一体的公司早一天退,中国多一份平安,愿所有这样的公司全部退出。

—————————————————————-

腾讯西安市网友 我是谁谁是我 1小时前
不遵守中国法律,商业政治化就让它滚出中国!

—————————————————————-

腾讯杭州市网友 小河流水 1小时前
就“狗歌”公司退出中国,对我一般不使用其业务的来说,起不到一点影响,欢迎“狗哥”公司退出,谢谢“狗歌”公司

—————————————————————-

腾讯株洲市网友 雪花飞舞 1小时前
我从不用谷歌,但我照样能搜索想要的东西

—————————————————————-

腾讯保定市网友 小哥 1小时前
他早就该走 香港也不应该要他

—————————————————————-

腾讯铁岭市网友 Z宁共和国 1小时前
我一直用百度! 我们自己国家的!
垃圾!     在中国别那么嚣张

—————————————————————-

腾讯北京市网友 婲花☆厷孒 1小时前
中国还差一个谷歌吗,笑话!!!!!!!!!!!!!!

—————————————————————-

腾讯临沂市网友 郑雯茜 1小时前
走就走吧 谁稀罕,我一直百度,比什么都好。基本上没用过谷歌 是个什么鸟东西,只有他自己拿自己当回事,支持中国支持百度支持政府 支持自己的选择!

—————————————————————-

腾讯湘潭市网友 四年夏天 1小时前
百度是世界上最好的引擎,是全国人民都支持百度,是中国人就顶起来~

—————————————————————-

腾讯大连市网友 寒床 1小时前
都用百度的,看看大家还是支持百度啊,应该是谷歌根本就没什么用才退出的!!!

—————————————————————-

腾讯河南省网友 逆水使者 1小时前
什么垃圾玩意啊,用百度不好啊。是中国人就支持百度吧,希望那天谷歌还被人黑!

—————————————————————-

腾讯白城市网友 天晴の夫君 1小时前
谷歌?听过,但没用过。谷歌滚蛋更好,中国还有百度,支持国货!支持百度!希望中国的搜索网站越来越好!越来越强大!但不能交尿(骄傲)啊!
让外国的东西都滚蛋把!

—————————————————————-

腾讯菏泽市网友 欣雨梦 1小时前
简直是笑话,什么高级的网站,还值得政府派黑客去攻击,既然让你来大陆经营,就说明了中国政府的诚意,何来攻击一说?肯定是谷歌公司自己违背了中国政府和人民的意愿,自己理亏,才无奈搬家的,

—————————————————————-

腾讯徐州市网友 诚实 1小时前
有谷歌这个东东吗?我怎么都没有听说过,抵制谷歌、支持百度!!!

—————————————————————-

腾讯德州市网友 為你存在 1小时前
谷歌走了还有百度 soso 支持国产

—————————————————————-

腾讯廊坊市网友 宅莮No謿 1小时前
我们有百度!我都没用过谷歌!拜拜!

—————————————————————-

腾讯湖州市网友 夏天的冰 1小时前
我一直只用百度,谷歌好像没什么新意!所以我宁可百度一下,也不谷歌一下!走了更好!

—————————————————————-

下面是我说:

走吧,走远一点吧。

天朝没有谷歌,一样是天朝。

谷歌没有天朝,一样是天堂。

天朝人民习惯了被强奸,习惯了一夫多妻制。

你来解放他们,是不可能的,因为他们接受不了。

有那闲功夫干点什么不好?

天朝人民喜欢在规定的时间,规定的地点,打开规定的网页,看规定的内容,思考规定的问题,说规定的话,过规定的生活。

天朝人民不喜欢自由。

恋人分手时,最好的理由是:我们不合适。

我觉得以此来对谷歌这几年跟天朝的关系作总结,挺合适的。

我只能抱一点点幻想地期望,谷歌不要拒绝中国的工程师,毕竟妓院里的女人,不全都是妓女。

看来我的美国VPN代理,还是要长期续费的……

MySQL 多实例运行

0

今天要在服务器上运行多个 MySQL,用不同的端口,彼此隔离数据。

我最先想到的办法是下源码,编译多份,编译的时候设置不同的默认路径、端口和 my.cnf 配置文件位置。

被同事劝止……

人家告诉我不用装多份,只装一份二进制 rpm 版本,然后 copy 多份配置文件,再用不同的命令行参数启动即可。

/usr/sbin/mysqld --user=mysql --skip-external-locking \
	--port=3316 --defaults-file=/etc/my.s1.cnf \
	--basedir=/ --datadir=/var/lib/mysql_s1/ \
	--pid-file=/var/lib/mysql/s1.pid \
	--socket=/var/lib/s1.sock &

/usr/sbin/mysqld --user=mysql --skip-external-locking \
	--port=3326 --defaults-file=/etc/my.s2.cnf \
	--basedir=/ --datadir=/var/lib/mysql_s2/ \
	--pid-file=/var/lib/mysql/s2.pid \
	--socket=/var/lib/s2.sock &

就这么简单!

我曾经用原有的想法,编译过多份 MySQL!

笨死算了~~

顺便说下 –skip-external-locking 这个参数,由此也可引出另一种方式。

MySQL 支持 multi 方式运行多个实例,在 my.cnf 中,每个 [mysql#] 段代表一个实例,# 替换为正整数即可。

看手册的意思,好像是说多个实例可以共用相同的数据目录,还未证实。

但 –skip-external-locking 的说明是,当用 multi 方式启动多个 mysqld server ,多个 server 对同一个 table 进行读写时会锁表。如果你不会同时读写同一张表,那么可以加上这个参数启动 MySQL。

也许可以提高性能吧,回头有空了测试下~

关闭VMware的PC喇叭

0

在VMWare中运行一些Linux上的软件如vi,出错时PC喇叭会不停地叫,很烦人。 其实只要在 c:\Documents and Settings\用户名\Application Data\VMware\config.ini (如不存在请自行建立)中加入这样一行:

mks.noBeep = "TRUE"

就可以从虚拟硬件上关闭VMWare的PC喇叭。

Duplicate entry ‘localhost-’ for key 1

1

导致这个错误的原因:
因为安装系统时设置了hostname为localhost导致mysql在创建表的时候没有创建成功。因此mysql库中user表里没有root这个用户或者说root没有显示出来,无法查看root的状态。这时需要手动创建。然而在安全模式无法直接创建用户,错误见下。
变个方向就能创建了,先给root给予权限,然后刷新表。之后就可以创建了。
一、killall -TERM mysqld
以安全模式启动mysql
/usr/bin/mysqld_safe –skip-grant-tables &
进入mysql
/usr/bin/mysql
mysql> use mysql
Database changed
mysql> select * from user where user=’root’;
Empty set (0.00 sec)

mysql> grant all privileges on *.* to root@localhost identified by ‘linuxtone’ with GRANT OPTION;
ERROR 1290 (HY000): The MySQL server is running with the –skip-grant-tables option so it cannot execute

this statement
mysql> update user set password=password(‘linuxtone’) where user=’root’;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0

注意单双引号。

mysql> flush privileges;   //注意先刷新下表
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on *.* to root@localhost identified by ‘linuxtone’ with GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from user where user=’root’;

后期处理:
/usr/local/mysql/bin/mysqladmin shutdown -uroot -p
刚才的密码
然后正常启动:/usr/bin/mysqld_safe &
/usr/local/mysql/bin/mysql -uroot -p
能正常登录!

二Duplicate entry ‘localhost-’ for key 1 问题,很可能是你的主机名有问题,比如是localhost?
导致mysql 的root 帐号的三个主机值(分别是%、localhost、主机名)的后二者的名字弄成一样了,导使唯一键值出现重复而禁用该记录了?
朋友的主机名设置成了:localhost 遭成了Duplicate entry ‘localhost-’ for key 1

设置好正确的主机名仍后重新编译就可以了,朋友安装系统的时候没有注意主机名

用工具提高效率 解决 PhpMyAdmin 乱码

0

最近做的项目有点特殊,多人共用开发服务器,无法搭建个人独享的开发环境。

连数据库,不能使用客户端的 GUI 工具,本来我已经离不开 SQLyog 了,现在逼我用命令行,我怎么受得了?

欣慰的是,尽管 MySQL server 虽然不在开发服务器上,也没有 root 权限给我的 IP 做授权,但开发服务器的 IP 是在授权列表内的。

我又想起了 PhpMyAdmin 这个好久不用的工具。

在 Dev server 上装好,配好用户名和密码,然后即可访问 MySQL,不过又遇到新问题!

MySQL server、Database、Table 和 Column 的字符集都是 latin1,而写入数据库的字符是 GBK。虽然设计不够合理,但也算勉强能用,用 SecureCRT 的命令行连接 MySQL,是可以看到正确的中文字符的,因为 SecureCRT 设置的是默认的字符集。

但 PhpMyAdmin 却总是乱码!

查了下 Variables 标签,有 2 个关于字符集的高亮提示,意思是全局设置是 latin1,但 character set client 是 utf8。

任凭我怎么改 MySQL connection collation 的设置,都无效。

tail 了一下 MySQL query log,看到 PhpMyAdmin 总是发送

SET CHARACTER SET ‘utf8′
SET collation_connection = ‘utf8_general_ci’

这 2 条语句!

我又 grep 一下,看到有个文件中的代码,让这 2 条语句被强制执行!

解决 PhpMyAdmin 字符乱码问题 所述的方法修改,即刻解决问题!

这下又能高效的访问 MySQL 啦,我相信打字再快的人,输入一条 Select 语句也没有我点击一下鼠标快!

Go to Top