php基础编程常见问题汇总

Post by agang 2011-11-3 23:05 Thursday

php基础编程常见问题汇总

1.如何判断php是否安装成功,以及输出php的相关配置环境参数?
答:1.新建一个php文件,例如文件名:phpinfo.php
  2.在php文件内添加代码
  <?php echo phpinfo(); ?>
  3.在浏览器打开这个文件,localhost/phpinfo.php
  如果正常出现一个详细的文档那么安装成功,如果直接输出了上面的源码或者提示下载文件为不成功。

2.如何打开php的错误提示功能?默认是关闭状态
答:php.ini文件搜索字段error_reporting 修改成 error_reporting = E_ALL
display_errors 修改成 display_errors = On 如果字段前有# 请删除这个注释符号。
需要重启apache,即可生效.也可以在php文件添加代码 error_reporting(E_ALL);

3.出现类似 "Notice: Undefined index:xxx in..."的错误提示
答:此为5.3(如果没记错)版本后的一个新变化,这并不是一个错误,仅仅是一个提示。
提示内容是变量未声明就使用了。
解决的方法可以是:
a.关闭出错提示(或修改出错提示等级)。参考常见问题2 修改 display_errors = Off
b.在提交的参数 例如 $_POST['test']赋值之前添加 if (issset($_POST['test']))判断,其他
变量提示可以用初始化赋值的方式代替.例如 $test='';

4.数据库或者页面输出中文乱码,但是英文以及数字没有任何问题
答:一般这种问题都是编码引起的,所以保持所有编码一致就是解决问题的方法.
以gbk为例
php文件头输出 header ( "Content-Type: text/html; charset=gbk" );
php链接数据库之后执行 mysql_query("SET NAMES 'gbk'");
数据库/表编码设置为gbk
文件编码 检查是否为ANSI

5.如何搭建php 的运行工作环境?
答:我们将会有一个详细的帖子来介绍这个方面的内容,如果是刚开始学习的同学推荐你使用集成
的安装包来学习,由于php版本比较多所以如果仅仅参考网上的教材很容易造成学习的困惑。
请直接下载以下相应系统的完整安装包,运行安装,配置问题请参考官方的帮助文档。

Windows:http://www.apachefriends.org/zh_cn/xampp-windows.html
Linux:http://www.apachefriends.org/zh_cn/xampp-linux.html

6.为什么我看到有的代码里用<? ?>就可以,而不需要这样<?php ?>
答:在php.ini中有一个短标记的选项,打开即可short_open_tag = On 记得如果前面有# 请删除这个注释符号。
个人并不推荐打开这个功能,请按照<?php ?>的方式来书写代码.

7.常用php的开发工具有哪些?
答:如果你喜欢看起来很专业功能繁多的开发工具
eclipse zendstudio phpdesinger phpstorm netbeans ...
如果你喜欢朴素,原始的开发工具
记事本 notepad++ editplus ....
Linux下基本上上面所列IDE都有,朴素的可用Vim Gvim ...

8.在浮点数运算的过程中出现“灵异”现象?
答:Warning
浮点数精度
显然简单的十进制分数如同 0.1 或 0.7 不能在不丢失一点点精度的情况下转换为内部二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999...。
这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了 0.3333333. . .。
所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数

9.UTF8编码的文件session_start(),header(),settcookie()等函数出错,提示"headers already sent "。

答: UTF8编码通常的编辑器都会在文件头部加上三字节的BOM编码来识别UTF8编码格式,这三个字节是普通文件编辑器看不到,而输出时去先行以HTML输出了。执行以上函数时就会提示以上错误。解决办法:用editplus等可以清除BOM的编辑器,清除BOM(设置为utf8清除BOM)保存一下即可。

0

UN Silverlight 时时彩源码破解手记

Post by agang 2011-10-30 5:10 Sunday

在互联网上,每天都会有很多Silverlight项目发布,有的是开源,有的只是为了展示。在Silverlight学习的初期,多数都需要模仿学习,所以,发现一个Silverlight项目,能够查看其中的源代码是最好不过了。但是,Silverlight发布,只是发布资源包XAP,而所有资源都在这个XAP文件中,该如何查看其中的资源和代码呢?下面我将演示反编译的方法,演示中我将用Silverlight.Net首页Silverlight作为例子。

 
1. 首先打开Silverlight.Net,该页面中包含一个Silverlight导航动画;
 
 
2. 在浏览器中,点击右键,查看页面源代码;
 
 
3. 在html源代码中搜索"xap",很快就能定位出xap的位置。
 
 
我们看到<param name ="Source " value ="clientBin/showcasenav/ShowcaseNav.xap " />
该value就是xap在服务器端的位置。
 
4. 我们使用同样的域名,来获取当前的xap文件。打开新的浏览器,在地址栏输入:  http://www.silverlight.net/clientBin/showcasenav/ShowcaseNav.xap
这时浏览器会提示你下载该xap文件。
 
 
5. 重新命名下载下来的文件ShowcaseNav.xap,为 ShowcaseNav.zip. 然后解压该压缩包到同一个目录. 在目录中,会看到该Silverlight使用的装配单文件,以及类库,和配置文件.
 
 
6. 下面可以使用大家都比较熟悉的反编译软件,Reflector来查看DLL中的资源和代码文件。 下载Reflector: http://www.red-gate.com/products/reflector/
 
 
7. 在Reflector中双击“MsCommunities.Silverlight.ShowcaseNav ”,展开文件会看到DLL和Resources,其中Resources中包含这所有的xaml文件和图片文件,DLL中都是类库后台代码。
 
 
 
8. 点击进入Reources目录,双击“MsCommunities.Silverlight.ShowcaseNav.g.resources ”,在Reflector右边可以看到资源列表,选中任意一个想查看代码的文件,点击右键“Save As”,保存到本地,即可使用VS2008或者文本编辑软件查看代码内容。
 
 
 

 
9. 对应着每个资源文件会有类库代码,双击“MsCommunities.Silverlight.ShowcaseNav.dll ”,再双击“MsCommunities.Silverlight.ShowcaseNav ”,可以查看各个类库文件,这里,我们选中"ItemAdvanceControl“,在Reflector右边即可看到反编译代码。
 
 
 
至此,我们已经讲述如何反编译Silverlight项目,查看其源代码,下面我想介绍一款国外的共享软件,也可以达到上面同样的效果 - Silverlight SPY,下载地址:http://silverlightspy.com/silverlightspy/download-silverlight-spy/
Silverlight SPY是一款共享软件,该软件可以自动获取XAP文件,帮你解析XAP中的文件,该软件和Reflector配合同样可以查看Silverlight项目源代码。同时,可以分解项目中的样式和UI,以及Isolated Storege展示给开发人员。我们在地址栏输入Silverlight.NET地址,即可得到,双击任何一个资源,在View窗口即可查看。
 

 

0

网络创业网站精选

Post by agang 2011-10-19 14:37 Wednesday

网络创业网站精选

http://tech2ipo.com/
http://www.cyzone.cn/
http://www.795.com.cn/
http://www.paidai.com/

 

0

2003上安装SQL2000时CD-KEY(序列号)无法验证解决方法

Post by agang 2011-10-12 14:29 Wednesday

方法一:
在给出的输入CD-KEY(序列号)的界面中,输入你已经安装的windows server 2003 的CD-KEY(序列号)即可以继续安装,而不是SQL 2000的CD-KEY(序列号)。
Windows server 2003的CD-KEY(序列号):JCGMJ-TC669-KCBG7-HB8X2-FXG7M
(附:SQL2000的CD-KEY(序列号):SN:311-0432642 CD-KEY:H6TWQ-TQQM8-HXJYG-D69F7-R84VM)

方法二:
按照下列步骤:
1. 在 SQLServer 安装向导, 单击 取消 。
2. 启动注册表编辑器。单击 开始-->运行, 键入 regedit , 和然后 "确定"。
3. 找到并双击 SafeDllSearchMode 注册表项。
在运行 Windows Server 2003 服务器或存储 Windows Server 2003, 此注册表项位于以下注册表子项下:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager
在运行带有 SP 4, Windows 2000 服务器此注册表项位于以下注册表子项下:
HKEY_LOCAL_MACHINESystemControlSession Manager
(注意 如果 SafeDllSearchMode注册表项不存在, 创建 SafeDllSearchMode 注册表项。)
4. 在 数值数据 框中, 将值从 1 更改为 0, 然后单击 确定 。
5. 退出注册表编辑器。
6. 重新安装 SQL Server 2000, 并安装最新的 SQL Server 2000 补丁包。
7. 重新启动服务器。

0

PHP性能优化-高度优化代码

Post by agang 2011-10-2 10:27 Sunday

    PHP是一种在服务器端执行的脚本语言,它开发了世界上许多知名的网站,包括雅虎和Facebook等。下面介绍6条PHP代码、性能优化的技巧。

1.将PHP升级到最新版

    提高性能的最简单的方式是不断升级、更新PHP版本。

2.使用分析器

    网站运行缓慢的原因颇多,Web应用程序极其复杂,让人扑朔迷离。而一种可能性在于PHP代码本身。这个分析器可以帮助你快速找出造成瓶颈的代码,提高网站运行的总体性能。

    Xdebug PHP extension提供了强大的功能,可以用来调试,也可以用来分析代码。方便开发人员直接跟踪脚本的执行,实时查看综合数据。还可以将这个数据导入到可视化的工具 KCachegrind中。

3.检错报告

    PHP支持强大的检错功能,方便你实时检查错误,从比较重要的错误到相对小的运行提示。总共支持13种独立的报告级别,你可以根据这些级别灵活匹配,生成用户自定义的检测报告。

4. 利用PHP的扩展

    一直以来,大家都在抱怨PHP内容太过繁杂,最近几年来开发人员作出了相应的努力,移除了项目中的一些冗余特征。即便如此,可用库以及其它扩展的数量还是很可观。甚至一些开发人员开始考虑实施自己的扩展方案。

5.使用PHP加速器

    一般情况下,PHP脚本被PHP引擎编译后执行,会被转换成机器语言,也称为操作码。如果PHP脚本经过反复编译而得到相同的结果,那为什么不完全跳过编译过程呢?

    通过PHP加速器,你完全可以实现这一点,它缓存了PHP脚本编译后的机器码,允许代码根据要求立即执行,而不经过繁琐的编译过程。

    对PHP开发人员而言,目前提供了两种可用的缓存方案,一种是APC(Alternative PHP Cache,可选PHP缓存),它是一个可以通过PEAR安装的开源加速器。另一种流行的方案是Zend Server,它不仅提供了操作码缓存技术,也提供了相应页面的缓存工具。

6.通过内存缓存来避免高成本操作

   PHP通常在检索和数据分析方面扮演着重要角色,这些操作可能会导致性能降低。实际上有些操作是完全没有必要的,特别是从数据库中反复检索一些常用的静态数据。不妨考虑一下短期使用 Memcached extension来缓存数据。Memcached的扩展缓存与libMemcached库协同工作,在RAM中缓存数据,也允许用户定义缓存的期限,有助于确保用户信息的实时更新。

0

实用教程:怎样开公司?

Post by agang 2011-9-15 14:02 Thursday

很多人会说这篇文章太小儿科了。但对于很多人来说,或许它才是最实用的。我们之后会持续关注一些基础的创业实用知识,甚至包括一些潜规则性的知识。希望有成熟创业经验的读者们能重温一下当年的创业历程,希望正要走上创业道路的潜在创业者们能少走弯路。期待您的反馈!

一、选择公司的形式:

 

普通的有限责任公司,最低注册资金3万元,需要2个(或以上)股东,从2006年1月起新的公司法规定,允许1个股东注册有限责任公司,这种特殊的有限责任公司又称“一人有限公司”(但公司名称中不会有“一人”字样,执照上会注明“自然人独资”),最低注册资金10万元。

 

如果你和朋友、家人合伙投资创业,可选择普通的有限公司,最低注册资金3万元;如果只有你一个人作为股东,则选择一人有限公司,最低注册资金10万元。

 

二、注册公司的步骤:

 

1.核名:到工商局去领取一张“企业(字号)名称预先核准申请表”,填写你准备取的公司名称,由工商局上网(工商局内部网)检索是否有重名,如果没有重名,就可以使用这个名称,就会核发一张“企业(字号)名称预先核准通知书”。这一步的手续费是30元。 (30元可以帮你检索5个名字,很多名字重复,所以一般常见的名字就不用试了,免得花冤枉钱。)

 

2.租房:去专门的写字楼租一间办公室,如果你自己有厂房或者办公室也可以,有的地方不允许在居民楼里办公 。租房后要签订租房合同,并让房东提供房产证的复印件。

 

签订好租房合同后,还要到税务局去买印花税,按年租金的千分之一的税率购买,例如你的每年房租是1万元,那就要买10元钱的印花税,贴在房租合同的首页,后面凡是需要用到房租合同的地方,都需要是贴了印花税的合同复印件。

 

3.编写“公司章程”:可以在工商局网站下载“公司章程”的样本,修改一下就可以了。章程的最后由所有股东签名。

 

4.刻私章:去街上刻章的地方刻一个私章,给他们讲刻法人私章(方形的)。费用大概20元左右。

 

5.到会计师事务所领取“银行询征函”:联系一家会计师事务所,领取一张“银行询征函”(必须是原件,会计师事务所盖鲜章)。如果你不清楚,可以看报纸上的分类广告,有很多会计师事务所的广告。

 

6.去银行开立公司验资户:所有股东带上自己入股的那一部分钱到银行,带上公司章程、工商局发的核名通知、法人代表的私章、身份证、用于验资的钱、空白询征函表格,到银行去开立公司帐户,你要告诉银行是开验资户。开立好公司帐户后,各个股东按自己出资额向公司帐户中存入相应的钱。

 

银行会发给每个股东缴款单、并在询征函上盖银行的章。

 

注 意: 公司法规定,注册公司时,投资人(股东)必须缴纳足额的资本,可以以贷币形式(也就是人民币)出资,也可以以实物(如汽车)、房产、知识产权等出资。 到银行办的只是货币出资这一部分,如果你有实物、房产等作为出资的,需要到会计师事务所鉴定其价值后再以其实际价值出资,比较麻烦,因此建议你直接拿钱来 出资公司法不管你用什么手段拿的钱,自己的也好、借的也好,只要如数缴足出资款即可

 

7.办理验资报告:拿着银行出具的股东缴款单、银行盖章后的询征函,以及公司章程、核名通知、房租合同、房产证复印件,到会计师事务所办理验资报告。一般费用500元左右(50万以下注册资金)。

 

8.注册公司:到工商局领取公司设立登记的各种表格,包括设立登记申请表、股东(发起人)名单、董事经理监理情况、法人代表登记表、指定代表或委托代理人登记表。填好后,连同核名通知、公司章程、房租合同、房产证复印件、验资报告一起交给工商局。大概3个工作日后可领取执照。此项费用约300元左右。

 

9.凭营业执照,到公安局指定的刻章社,去刻公章、财务章。后面步骤中,均需要用到公章或财务章。

 

10.办理企业组织机构代码证:凭营业执照到技术监督局办理组织机构代码证,费用是80元。办这个证需要半个月 ,技术监督局会首先发一个预先受理代码证明文件,凭这个文件就可以办理后面的税务登记证、银行基本户开户手续了。

 

11.去银行开基本户:凭营业执照、组织机构代码证,去银行开立基本帐号。最好是在原来办理验资时的那个银行的同一网点去办理,否则,会多收100元的验资帐户费用。

 

开基本户需要填很多表,你最好把能带齐的东西全部带上,要不然要跑很多趟,包括营业执照正本原件、身份证、组织机构代码证、公财章、法人章。

 

开基本户时,还需要购买一个密码器(从2005年下半年起,大多银行都有这个规定),密码器需要280元。今后你的公司开支票、划款时,都需要使用密码器来生成密码。

 

12.办理税务登记:领取执照后,30日内到当地税务局申请领取税务登记证。一般的公司都需要办理2种税务登记证,即国税和地税。费用是各40元,共80元。

 

办理税务登记证时,必须有一个会计,因为税务局要求提交的资料其中有一项是会计资格证和身份证。你可先请一个兼职会计,小公司刚开始请的兼职会计一般200元工资就可以了

 

13.申请领购发票:如果你的公司是销售商品的,应该到国税去申请发票,如果是服务性质的公司,则到地税申领发票。

 

最后就开始营业了。 注意每个月按时向税务申报税哦,即使没有开展业务不需要缴税,也要进行零申报,否则会被罚款的。

 

有二点你可能比较关心:

 

1.公司必须建立健全的会计制度,你可能担心自己不会,怎么办?刚开始成立的公司,业务少,对会计的工作量也非常小,你可以请一个兼职会计,每个月到你的公司帮你建帐,二、三天时间就够了,给他200-500左右的工资即可。

 

2.公司的税额:

 

营业税:销售商品的公司,按所开发票额的4%征收增殖税;提供服务的公司,按所开发票额的5%征收营业税。

 

所得税:对企业的纯利润征收18-33%的企业所得税。 小公司的利润不多,一般是18%。对企业所得税,做帐很关键,如果帐面上你的利润很多,那税率就高。所以,平常的购买设备都要开发票,你吃饭、坐车的票都留起来,可以做为你的企业运作成本。

 

二种税的区别:营业税是对营业额征税,不管你赚没有赚钱,只有发生了交易,开了发票,就要征税;所得税,是对利润征税,利润就是营业额扣减各种成本后剩余的钱,只有赚了钱,才会征所得税。

还有其它各种各样很多种的税,但没有多少钱,主要是上面二种,特别是所得税非常高 .

0

十个PHP高级应用技巧

Post by agang 2011-8-23 17:32 Tuesday

1,  使用 ip2long() 和 long2ip() 函数来把 IP 地址转化成整型存储到数据库里。这种方法把存储空间降到了接近四分之一(char(15) 的 15 个字节对整形的 4 个字节),计算一个特定的地址是不是在一个区段内页更简单了,而且加快了搜索和排序的速度(虽然有时仅仅是快了一点)。

2,   在验证 email 地址的时候使用 checkdnsrr() 函数验证域名是否存在。这个内置函数能够确认指定的域名能够解析成 IP 地址。该函数的PHP 文档的用户评论部分有一个简单的用户自定义函数,这个函数基于 checkdnsrr(),用来验证 email 地址的合法性。对于那些认为自己的 email 地址是 [url=mailto:“joeuser@wwwphp.net]“joeuser@wwwphp.net[/url]” 而不是 [url=mailto:“joeuser@php.net]“joeuser@php.net[/url]” 的家伙们,这个方法可以很方便的抓住他们。

3,   如果你使用的是 PHP 5 和 MySQL 4.1 或者更高的版本,考虑抛弃 mysql_* 系列函数改用改进版的 mysqli_* 系列函数。一个很好的功能就是你可以使用预处理语句,如果你在维护一个数据库密集型站点,这个功能能够加快查询速度。一些评估分数。

4,  学会爱上三元运算符。

5,  如果你在项目中感觉到有可复用的部分,在你写下一行代码前先看看 PEAR 中是否已经有了。很多 PHP 程序员都知道 PEAR 是一个很好的资源库,虽然还有很多程序员不知道。这个在线资源库包含了超过 400 个可以复用的程序片段,这些程序片段你可以立即用刀你的程序里。除非说你的项目真的是非常特别的,你总能找到帮你节省时间的 PEAR 包。(参见 PECL)

6,  用 highlight_file() 来自动的打印出格式化的很漂亮的源代码。如果你在留言板、IRC 这些地方寻求一个脚本的帮助的话,这个函数用起来非常的顺手。当然了,要小心不要意外的泄露出你的数据库连接信息和密码等。

7,  使用 error_reporting(0) 函数来防止用户看到潜在的敏感错误信息。在理想情况下,发布服务器应该在 php.ini 里完全禁止。但是如果你用的是一个共享的 web 服务器的话,你没有自己的 php.ini 文件,那么这种情况下你最好的选择就是在所有脚本的第一行前加上 error_reporting(0);(或者使用 require_once() 方法)。这就能够在出错的时候完全屏蔽敏感的 SQL 查询语句和路径名。

8,  在网数据库中存储很大的字符串之前使用 gzcompress() 和 gzuncompress() 来显式的压缩/解压字符串。这个 PHP 内置函数使用 gzip 算法,可以压缩普通文本达 90%。在我每次要读写 BLOB 类型的字段的时候都使用这些函数。唯一额例外就是当我需要全文检索的时候。

9,  通过“引用”传递参数的方法从一个函数中得到多个返回值。就像三元运算符一样,大部分受过正式编程训练的程序员都知道这个技巧。但是那些 HTML 背景大于 Pascal 背景的程序员都或多或少的有过这样的疑问“在仅能使用一次 return 的情况下,从一个函数里返回多个值?”答案就是在变量前加上一个 “&” 符号,通过“引用”传递而非“值”传递。

10,  完全理解“魔术引号”和 SQL 注入的危险性。我希望阅读到这里的开发者都已经很对 SQL 注入和了解了。不过我还是把这条列在这里,是因为这个确实有点难以理解。如果你还没有听说过这种说法,那么把今天剩下的时间都用来 Google、阅读吧。
 

0

解决PHP的include带参数的问题

Post by agang 2011-8-3 5:20 Wednesday


php的include可以载入一个外部php文件,其参数是一个文件名,既然是文件名,就不能带参数了。

php中,如果include载入的文件一定要带参数,就只有一种办法,即这个参数是一个全路径的URL地址。

例如:

include "http://localhost/aaa.php?id=1 "; //正确
include "aaa.php?id=1"; //错误

其实include本义就只是用来载入一个外部文件到当前文件中来的,并不解释其中的代码。因此带参数看上去似乎没有意义。
比如以下代码(1.php):
$a="123";
include "aaa.php";

想要用aaa.php接收变量$a的值,只需要在aaa.php中直接调用即可,比如aaa.php的代码如下写:
echo $a;

这样执行1.php,即会输出$a的值:123

然而,有问题就肯定是有需求,我们既然要求include带参数,就肯定不仅仅是想在被载入的文件中使用载入者文件中的变量这么简单。

现在的需求是:
 希望根据不同的参数,include同一个文件中的不同代码段。

 基于上述要求,我的解决方法是:
 把被载入的文件(假设为aaa.php)中的代码写成function,例如:
 function abc($x)
 {
  $returnValue;
  switch($x)
  {
   case 1:
    $returnValue="苹果";break;
   case 2:
    $returnValue="香蕉";break;
   case 3:
    $returnValue="杨桃";break;
  }
 }

 然后在主文件(假设为1.php)中这样写:

 include "aaa.php";
 echo abc(1); //输出:苹果
 echo abc(2); //输出:香蕉
 echo abc(3); //输出:杨桃

 其实照上面这种方法,说到底,与前面说的直接使用主文件中的变量,并没有什么大的区别,但是这样做的好处是,不管你主文件中的变量如何变化,aaa.php中的这个function都不需要改动,并且也可以在别的文件中继续被include来使用。

 这样一来,直接使用主文件中的变量 与 做成函数放在主文件中调用,两者之间的区别,已经显而易见了!


以下是我自己使用中遇到的一些经验的总结:使用readfile(“http://XXXX/example.php?name=valude”);可以传递带参数的文件~~

0

MySQL锁表研究

Post by agang 2011-7-13 18:20 Wednesday

1、对于MySQL来说,有三种锁的级别:页级、表级、行级。

页级的典型代表引擎为BDB。
表级的典型代表引擎为MyISAM,MEMORY以及很久以前的ISAM。
行级的典型代表引擎为INNODB。

2、我们实际应用中用的最多的就是行锁。
行级锁的优点如下:
1)、当很多连接分别进行不同的查询时减小LOCK状态。
2)、如果出现异常,可以减少数据的丢失。因为一次可以只回滚一行或者几行少量的数据。
行级锁的缺点如下:
1)、比页级锁和表级锁要占用更多的内存。
2)、进行查询时比页级锁和表级锁需要的I/O要多,所以我们经常把行级锁用在写操作而不是读操作。
3)、容易出现死锁。

3、MySQL用写队列和读队列来实现对数据库的写和读操作。

对于写锁定如下:
1)、如果表没有加锁,那么对其加写锁定。
2)、否则,那么把请求放入写锁队列中。
对于读锁定如下:
1)、如果表没有加写锁,那么加一个读锁。
2)、否则,那么把请求放到读锁队列中。
当然我们可以分别用low_priority 以及high_priority在写和读操作上来改变这些行为。


4、下面我来一个简单的例子解释上面的说法。

我们来运行一个时间很长的查询
1)、客户端1:
Sql代码 
mysql> select count(*) from content group by content;  
... 

mysql> select count(*) from content group by content;
...
客户端2:
Sql代码 
mysql> update content set content = 'I love you' where id = 444;  
Query OK, 1 row affected (30.68 sec)  
Rows matched: 1  Changed: 1  Warnings: 0 

mysql> update content set content = 'I love you' where id = 444;
Query OK, 1 row affected (30.68 sec)
Rows matched: 1  Changed: 1  Warnings: 0
用了半分钟。
2)、我们现在终止客户端1。
此时客户端2:
Sql代码 
mysql> update content set content = 'I hate you' where id = 444;  
Query OK, 1 row affected (0.02 sec)  
Rows matched: 1  Changed: 1  Warnings: 0 

mysql> update content set content = 'I hate you' where id = 444;
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0
仅仅用了20毫秒。

这个例子很好的说明了读写队列的运行。
对于1中的客户端1,此时表没有加锁,当然也没有加写锁了,那么此时客户端1对表加了一个读锁。
对于1中的客户端2,此时因为表有一个读锁,所以把UPDATE请求放到写锁定队列中。
当读锁释放的时候,也就是SHOW PROCESSLIST中STATUS 为COPY TO TMP TABLE的时候,UPDATE操作开始执行。

5、可以在REPLICATION中对MASTER 和SLAVE运用不同的锁定使系统达到最佳的性能。(当然这个前提是SQL语句都是最优的。)
 

0

mysql批量删除前缀相同的表

Post by agang 2011-7-1 18:20 Friday

mysql批量删除前缀相同的表:
Sql代码 
Select CONCAT( 'drop table ', table_name, ';' )  
FROM information_schema.tables  
Where table_name LIKE 'pre_%'; 
 

0