首页
关于
友情链接
文章归档
Search
1
centos 32位 64位 下挂vagex一键包代码
719 阅读
2
wordpress转typecho方法
615 阅读
3
一个自制的virto精简版kvm qemu win2003模板 最低64M内存可用
605 阅读
4
PHP 安装
539 阅读
5
暴雨 车被泡了~
479 阅读
默认分类
vps综合利用
登录
/
注册
Search
标签搜索
Uncategorized
安装
mysql
utf-8
网站
google
linux
free
免费
黑色
ssl
一键包
优化
40%
press
vagex
32位
64位
debian
domain
御品VPS
累计撰写
501
篇文章
累计收到
1
条评论
首页
栏目
默认分类
vps综合利用
页面
关于
友情链接
文章归档
搜索到
5
篇与
优化
的结果
2018-03-25
PHP MySQL 预处理语句
PHP MySQL 创建表PHP 图像处理 PHP MySQL 预处理语句预处理语句对于防止 MySQL 注入是非常有用的。预处理语句及绑定参数预处理语句用于执行多个相同的 SQL 语句,并且执行效率更高。预处理语句的工作原理如下: 预处理:创建 SQL 语句模板并发送到数据库。预留的值使用参数 "?" 标记 。例如:INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?) 数据库解析,编译,对SQL语句模板执行查询优化,并存储结果不输出。 执行:最后,将应用绑定的值传递给参数("?" 标记),数据库执行语句。应用可以多次执行语句,如果参数的值不一样。 相比于直接执行SQL语句,预处理语句有两个主要优点: 预处理语句大大减少了分析时间,只做了一次查询(虽然语句多次执行)。 绑定参数减少了服务器带宽,你只需要发送查询的参数,而不是整个语句。 预处理语句针对SQL注入是非常有用的,因为参数值发送后使用不同的协议,保证了数据的合法性。 MySQLi 预处理语句以下实例在 MySQLi 中使用了预处理语句,并绑定了相应的参数:实例 (MySQLi 使用预处理语句)<?php$servername="localhost";$username="username";$password="password";$dbname="myDB";//创建连接$conn=newmysqli($servername,$username,$password,$dbname);//检测连接if($conn->connect_error){die("连接失败:".$conn->connect_error);}//预处理及绑定$stmt=$conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");$stmt->bind_param("sss",$firstname,$lastname,$email);//设置参数并执行$firstname="John";$lastname="Doe";$email="john@example.com";$stmt->execute();$firstname="Mary";$lastname="Moe";$email="mary@example.com";$stmt->execute();$firstname="Julie";$lastname="Dooley";$email="julie@example.com";$stmt->execute();echo"新记录插入成功";$stmt->close();$conn->close();?>解析以下实例的每行代码:"INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)"在 SQL 语句中,我们使用了问号 (?),在此我们可以将问号替换为整型,字符串,双精度浮点型和布尔值。接下来,让我们来看下 bind_param() 函数:$stmt->bind_param("sss", $firstname, $lastname, $email);该函数绑定了 SQL 的参数,且告诉数据库参数的值。 "sss" 参数列处理其余参数的数据类型。s 字符告诉数据库该参数为字符串。参数有以下四种类型: i - integer(整型) d - double(双精度浮点型) s - string(字符串) b - BLOB(binary large object:二进制大对象) 每个参数都需要指定类型。通过告诉数据库参数的数据类型,可以降低 SQL 注入的风险。 注意: 如果你想插入其他数据(用户输入),对数据的验证是非常重要的。 PDO 中的预处理语句以下实例我们在 PDO 中使用了预处理语句并绑定参数:实例 (PDO 使用预处理语句)<?php$servername="localhost";$username="username";$password="password";$dbname="myDBPDO";try{$conn=newPDO("mysql:host=$servername;dbname=$dbname",$username,$password);//设置 PDO 错误模式为异常$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);//预处理 SQL 并绑定参数$stmt=$conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (:firstname, :lastname, :email)");$stmt->bindParam(':firstname',$firstname);$stmt->bindParam(':lastname',$lastname);$stmt->bindParam(':email',$email);//插入行$firstname="John";$lastname="Doe";$email="john@example.com";$stmt->execute();//插入其他行$firstname="Mary";$lastname="Moe";$email="mary@example.com";$stmt->execute();//插入其他行$firstname="Julie";$lastname="Dooley";$email="julie@example.com";$stmt->execute();echo"新记录插入成功";}catch(PDOException$e){echo"Error:".$e->getMessage();}$conn=null;?>
2018年03月25日
149 阅读
0 评论
0 点赞
2018-03-25
PHP Libxml 函数
PHP HTTP 函数PHP Mail 函数 PHP Libxml 函数PHP Libxml 简介Libxml 函数和常量与 SimpleXML、XSLT 以及 DOM 函数一起使用。安装这些函数需要 Libxml 程序包。 在 xmlsoft.org 下载PHP Libxml 函数PHP:指示支持该函数的最早的 PHP 版本。 函数 描述 PHP libxml_clear_errors() 清空 Libxml 错误缓冲。 5 libxml_get_errors() 检索错误数组。 5 libxml_get_last_error() 从 Libxml 检索最后的错误。 5 libxml_set_streams_context() 为下一次 Libxml 文档加载或写入设置流环境。 5 libxml_use_internal_errors() 禁用 Libxml 错误,允许用户按需读取错误信息。 5 PHP Libxml 常量 函数 描述 PHP LIBXML_COMPACT 设置小型节点分配优化。会改善应用程序的性能。 5 LIBXML_DTDATTR 设置默认 DTD 属性。 5 LIBXML_DTDLOAD 加载外部子集。 5 LIBXML_DTDVALID 通过 DTD 进行验证。 5 LIBXML_NOBLANKS 删除空节点。 5 LIBXML_NOCDATA 把 CDATA 设置为文本节点。 5 LIBXML_NOEMPTYTAG 更改空标签(比如 <br/> 改为 <br></br>)。仅在 DOMDocument->save() 和 DOMDocument->saveXML() 函数中可用。 5 LIBXML_NOENT 替代实体。 5 LIBXML_NOERROR 不显示错误报告。 5 LIBXML_NONET 在加载文档时停止网络访问。 5 LIBXML_NOWARNING 不显示警告报告。 5 LIBXML_NOXMLDECL 在保存文档时,撤销 XML 声明。 5 LIBXML_NSCLEAN 删除额外的命名空间声明。 5 LIBXML_XINCLUDE 使用 XInclude 置换。 5 LIBXML_ERR_ERROR 获得可恢复的错误。 5 LIBXML_ERR_FATAL 获得致命的错误。 5 LIBXML_ERR_NONE 获得无错误。 5 LIBXML_ERR_WARNING 获得简单警告。 5 LIBXML_VERSION 获得 Libxml 版本(例如:20605 或 20617)Get libxml version (e.g. 20605 or 20617) 5 LIBXML_DOTTED_VERSION 获得有点号的 Libxml 版本(例如:2.6.5 或 2.6.17)。 5
2018年03月25日
152 阅读
0 评论
0 点赞
2018-03-23
HTML 布局
HTML 区块HTML 表单 HTML 布局网页布局对改善网站的外观非常重要。请慎重设计您的网页布局。在线实例使用 <div> 元素的网页布局如何使用 <div> 元素添加布局。使用 <table> 元素的网页布局如何使用 <table> 元素添加布局。网站布局大多数网站会把内容安排到多个列中(就像杂志或报纸那样)。大多数网站可以使用 <div> 或者 <table> 元素来创建多列。CSS 用于对元素进行定位,或者为页面创建背景以及色彩丰富的外观。 虽然我们可以使用HTML table标签来设计出漂亮的布局,但是table标签是不建议作为布局工具使用的 - 表格不是布局工具。 HTML 布局 - 使用<div> 元素div 元素是用于分组 HTML 元素的块级元素。下面的例子使用五个 div 元素来创建多列布局:实例<!DOCTYPEhtml><html><head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head><body><divid="container"style="width:500px"><divid="header"style="background-color:#FFA500;"><h1style="margin-bottom:0;">主要的网页标题</h1></div><divid="menu"style="background-color:#FFD700;height:200px;width:100px;float:left;"><b>菜单</b><br>HTML<br>CSS<br>JavaScript</div><divid="content"style="background-color:#EEEEEE;height:200px;width:400px;float:left;">内容在这里</div><divid="footer"style="background-color:#FFA500;clear:both;text-align:center;">版权 © runoob.com</div></div></body></html>尝试一下 »上面的 HTML 代码会产生如下结果:HTML 布局 - 使用表格使用 HTML <table> 标签是创建布局的一种简单的方式。大多数站点可以使用 <div> 或者 <table> 元素来创建多列。CSS 用于对元素进行定位,或者为页面创建背景以及色彩丰富的外观。 即使可以使用 HTML 表格来创建漂亮的布局,但设计表格的目的是呈现表格化数据 - 表格不是布局工具! 下面的例子使用三行两列的表格 - 第一和最后一行使用 colspan 属性来横跨两列:实例<!DOCTYPEhtml><html><head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head><body><tablewidth="500"border="0"><tr><tdcolspan="2"style="background-color:#FFA500;"><h1>主要的网页标题</h1></td></tr><tr><tdstyle="background-color:#FFD700;width:100px;"><b>菜单</b><br>HTML<br>CSS<br>JavaScript</td><tdstyle="background-color:#eeeeee;height:200px;width:400px;">内容在这里</td></tr><tr><tdcolspan="2"style="background-color:#FFA500;text-align:center;">版权 © runoob.com</td></tr></table></body></html>尝试一下 »上面的 HTML 代码会产生以下结果:HTML 布局 - 有用的提示Tip: 使用 CSS 最大的好处是,如果把 CSS 代码存放到外部样式表中,那么站点会更易于维护。通过编辑单一的文件,就可以改变所有页面的布局。如需学习更多有关 CSS 的知识,请访问我们的CSS 教程。Tip: 由于创建高级的布局非常耗时,使用模板是一个快速的选项。通过搜索引擎可以找到很多免费的网站模板(您可以使用这些预先构建好的网站布局,并优化它们)。HTML 布局标签 标签描述 <div>定义文档区块,块级(block-level) <span>定义 span,用来组合文档中的行内元素。
2018年03月23日
165 阅读
0 评论
0 点赞
2018-03-23
Python3 标准库概览
Python3 面向对象Python3 基础语法 Python3 标准库概览操作系统接口os模块提供了不少与操作系统相关联的函数。 >>> import os >>> os.getcwd() # 返回当前的工作目录 'C://Python34' >>> os.chdir('/server/accesslogs') # 修改当前的工作目录 >>> os.system('mkdir today') # 执行系统命令 mkdir 0 建议使用 "import os" 风格而非 "from os import *"。这样可以保证随操作系统不同而有所变化的 os.open() 不会覆盖内置函数 open()。在使用 os 这样的大型模块时内置的 dir() 和 help() 函数非常有用: >>> import os >>> dir(os) <returns a list of all module functions> >>> help(os) <returns an extensive manual page created from the module's docstrings> 针对日常的文件和目录管理任务,:mod:shutil 模块提供了一个易于使用的高级接口: >>> import shutil >>> shutil.copyfile('data.db', 'archive.db') >>> shutil.move('/build/executables', 'installdir') 文件通配符glob模块提供了一个函数用于从目录通配符搜索中生成文件列表: >>> import glob >>> glob.glob('*.py') ['primes.py', 'random.py', 'quote.py'] 命令行参数通用工具脚本经常调用命令行参数。这些命令行参数以链表形式存储于 sys 模块的 argv 变量。例如在命令行中执行 "python demo.py one two three" 后可以得到以下输出结果: >>> import sys >>> print(sys.argv) ['demo.py', 'one', 'two', 'three'] 错误输出重定向和程序终止sys 还有 stdin,stdout 和 stderr 属性,即使在 stdout 被重定向时,后者也可以用于显示警告和错误信息。 >>> sys.stderr.write('Warning, log file not found starting a new one/n') Warning, log file not found starting a new one 大多脚本的定向终止都使用 "sys.exit()"。字符串正则匹配re模块为高级字符串处理提供了正则表达式工具。对于复杂的匹配和处理,正则表达式提供了简洁、优化的解决方案: >>> import re >>> re.findall(r'/bf[a-z]*', 'which foot or hand fell fastest') ['foot', 'fell', 'fastest'] >>> re.sub(r'(/b[a-z]+) /1', r'/1', 'cat in the the hat') 'cat in the hat' 如果只需要简单的功能,应该首先考虑字符串方法,因为它们非常简单,易于阅读和调试: >>> 'tea for too'.replace('too', 'two') 'tea for two' 数学math模块为浮点运算提供了对底层C函数库的访问: >>> import math >>> math.cos(math.pi / 4) 0.70710678118654757 >>> math.log(1024, 2) 10.0 random提供了生成随机数的工具。 >>> import random >>> random.choice(['apple', 'pear', 'banana']) 'apple' >>> random.sample(range(100), 10) # sampling without replacement [30, 83, 16, 4, 8, 81, 41, 50, 18, 33] >>> random.random() # random float 0.17970987693706186 >>> random.randrange(6) # random integer chosen from range(6) 4 访问 互联网有几个模块用于访问互联网以及处理网络通信协议。其中最简单的两个是用于处理从 urls 接收的数据的 urllib.request 以及用于发送电子邮件的 smtplib: >>> import os >>> dir(os) <returns a list of all module functions> >>> help(os) <returns an extensive manual page created from the module's docstrings> 0注意第二个例子需要本地有一个在运行的邮件服务器。日期和时间datetime模块为日期和时间处理同时提供了简单和复杂的方法。支持日期和时间算法的同时,实现的重点放在更有效的处理和格式化输出。该模块还支持时区处理: >>> import os >>> dir(os) <returns a list of all module functions> >>> help(os) <returns an extensive manual page created from the module's docstrings> 1 数据压缩以下模块直接支持通用的数据打包和压缩格式:zlib,gzip,bz2,zipfile,以及 tarfile。 >>> import os >>> dir(os) <returns a list of all module functions> >>> help(os) <returns an extensive manual page created from the module's docstrings> 2 性能度量有些用户对了解解决同一问题的不同方法之间的性能差异很感兴趣。Python 提供了一个度量工具,为这些问题提供了直接答案。例如,使用元组封装和拆封来交换元素看起来要比使用传统的方法要诱人的多,timeit 证明了现代的方法更快一些。 >>> import os >>> dir(os) <returns a list of all module functions> >>> help(os) <returns an extensive manual page created from the module's docstrings> 3相对于 timeit 的细粒度,:mod:profile 和 pstats 模块提供了针对更大代码块的时间度量工具。测试模块开发高质量软件的方法之一是为每一个函数开发测试代码,并且在开发过程中经常进行测试doctest模块提供了一个工具,扫描模块并根据程序中内嵌的文档字符串执行测试。测试构造如同简单的将它的输出结果剪切并粘贴到文档字符串中。通过用户提供的例子,它强化了文档,允许 doctest 模块确认代码的结果是否与文档一致: >>> import os >>> dir(os) <returns a list of all module functions> >>> help(os) <returns an extensive manual page created from the module's docstrings> 4unittest模块不像 doctest模块那么容易使用,不过它可以在一个独立的文件里提供一个更全面的测试集: >>> import os >>> dir(os) <returns a list of all module functions> >>> help(os) <returns an extensive manual page created from the module's docstrings> 5
2018年03月23日
176 阅读
0 评论
0 点赞
2017-03-28
转 MySQL性能优化
MySQL 作为 LAMP 组件中的重要一环,在网站架构中担当关于数据处理的重任。作为目前流行最为广泛的开源数据库,网络上已经有相当多的各种优化教程。本文将试着从改善 MySQL 配置入手,进一步提升 MySQL 的性能。关于如何优化数据库结构及 SQL 语句不在本次讨论范围之内。MySQL 性能优化我打算分为三个部分,一是物理硬件的优化,二是 MySQL 安装时的编译优化,三是 MySQL 的配置文件 my.cnf 的优化。一、物理硬件的优化磁盘 I/O 是制约 MySQL 性能的最大因素之一。采用 SSD 的服务器肯定会比普通 HDD 硬盘性能要好;采用 RAID10 的肯定要比单盘的性能要好。所谓物理硬件的优化,其实也就是服务器(VPS)硬件的堆砌。更多的内存,更快的磁盘,更强的 CPU 无疑就是最佳的。二、MySQL 安装时的编译优化一般情况下不建议直接 yum 安装 MySQL ,一来不能定制功能,二来版本比较老。所以我一般会采取编译安装的方式。源码编译安装的前提条件(依赖包):1、CMake。官网:http://www.cmake.org/ 2、GCC,A working ANSI C++ compiler. GCC 4.2.1 or later。官网:http://www.gnu.org/software/gcc/3、bison,2.1 or newer。官网:http://www.gnu.org/software/bison/4、m4。官网:http://www.gnu.org/software/m4/5、tar。官网:http://www.gnu.org/software/tar/编译参数:MySQL 5.5.xhttp://dev.mysql.com/doc/refman/5.5/en/source-configuration-options.htmlMySQL 5.6.xhttp://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.htmlLAMP 一键安装脚本里对 MySQL 编译的参数如下:-DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=complex -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_EMBEDDED_SERVER=1由于 -DWITH_DEBUG 默认就是 OFF 状态,所以也无需特别指定此参数。三、MySQL 的配置文件 my.cnf 的优化配置文件:MySQL 5.5.xhttps://dev.mysql.com/doc/refman/5.5/en/server-system-variables.htmlMySQL 5.6.xhttps://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html结合 LAMP 一键安装脚本的 my.cnf 文件,只列出其中 [mysqld] 段落中的内容,其他段落内容对 MySQL 运行性能影响甚微,因而姑且忽略。介绍一些优化参数。[mysqld]port = 3306socket = /tmp/mysql.sockskip-external-locking#避免 MySQL 的外部锁定,减少出错几率增强稳定性。key_buffer_size = 16M#指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。16M适用于 512MB内存,对于内存在4GB左右的服务器该参数可设置为256M,依此类推即可。注意:该参数值设置的过大反而会是服务器整体效率降低!max_allowed_packet = 1M#MySQL 根据此配置会限制 server 接受的数据包大小。table_open_cache = 64#指定表高速缓存的大小。每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。注意,不能盲目地把table_open_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失败。64 适用于 512MB 内存,1GB 内存则可以设置成 128,依此类推即可。sort_buffer_size = 512K#查询排序时所能使用的缓冲区大小。注意:该参数对应的分配内存是每连接独占,如果有100个连接,那么实际分配的总共排序缓冲区大小为100 × 512K = 50MB。512K 适用于 512MB 内存,1GB 内存则可以设置成 1M,依此类推即可。net_buffer_length = 8K#初始化server 接受的数据包大小,当需要的时候再由 max_allowed_packet 控制增长的大小。注意:该参数值设置的范围只能为1 – 1024K。read_buffer_size = 256K#读查询操作所能使用的缓冲区大小。和 sort_buffer_size 一样,该参数对应的分配内存也是每连接独享。256K 适用于 512MB 内存,1GB 内存则可以设置成 512K,依此类推即可。read_rnd_buffer_size = 512K#查询操作多表所能使用的缓冲区大小。设置较大的值可以有效提升 ORDER BY 的性能。和 sort_buffer_size 一样,该参数对应的分配内存也是每连接独享。512K适用于 512MB 内存,1GB 内存则可以设置成 1M,依此类推即可。myisam_sort_buffer_size = 8M#MyISAM 排序所能使用的缓冲区大小。8M 适用于 512MB 内存,1GB 内存则可以设置成 16M,依此类推即可。max_connections = 256#指定MySQL允许的最大连接进程数。如果在访问时经常出现 Too Many Connections 的错误提示,则需要增大该参数值。注意:该参数默认值为 151,最大可以设置为 100000这里建议设置成内存的一半,比如 512MB 内存就设置成 256,依此类推。[写在最后]我发现所谓的 MySQL 优化大部分都是来自于官方文档的说明。国内的教程要么是很老的,要么是随处转载的,几乎没有多大参考价值。没有最优的配置文件,只有适合自己的配置。所以需要结合实际情况,比如内存大小,磁盘 I/O 状况来调整。LAMP 一键脚本默认的配置(默认是用于 512MB 内存的 VPS),肯定不是适合你的(是适合我的)。而上面只是列举出几个比较重要的参数,更多的参数请参照官方网站。转载请注明:秋水逸冰 » MySQL性能优化的简单说明
2017年03月28日
227 阅读
0 评论
0 点赞