Login
网站首页 > 文章中心 > 其它

g高性能php_高性能和12核

作者:小编 更新时间:2023-08-01 13:40:25 浏览量:340人看过

php+mysql优化,百万至千万级快速分页mysql性能到底能有多高

php+Mysql 优化,百万至千万级快速分页

MySql 性能到底能有多高?用了php半年多,真正如此深入的去思考这个问题还是从前天开始.有过痛苦有过绝望,到现在充满信心!MySql 这个数据库绝对是适合dba级的高手去玩的,一般做一点1万篇新闻的小型系统怎么写都可以,用xx框架可以实现快速开发.可是数据量到了10万,百万至千万,他的性能还能那么高吗?一点小小的失误,可能造成整个系统的改写,甚至更本系统无法正常运行!好了,不那么多废话了.用事实说话,看例子:

select id,title from collect limit 1000,10; 很快;基本上0.01秒就OK,再看下面的

g高性能php_高性能和12核-图1

这就是用了id做索引的结果.可是问题复杂那么一点点,就完了.看下面的语句

建一个索引表: t (id,title,vtype) 并设置成定长,然后做分页,分页出结果再到 collect 里面去找info . 是否可行呢?实验下就知道了.

难道MySQL 无法突破100万的限制吗?到了100万的分页就真的到了极限?

答案是: NO !!!! 为什么突破不了100万是因为不会设计mysql造成的.下面介绍非分表法,来个疯狂的测试!一张表搞定100万记录,并且10G 数据库,如何快速分页!

完美解决了分页问题了.可以快速返回id就有希望优化limit , 按这样的逻辑,百万级的limit 应该在0.0x秒就可以分完.看来mysql 语句的优化和索引时非常重要的!

好了,回到原题,如何将上面的研究成功快速应用于开发呢?如果用复合查询,我的轻量级框架就没的用了.分页字符串还得自己写,那多麻烦?这里再看一个例子,思路就出来了:

mygod ,mysql 的索引竟然对于in语句同样有效!看来网上说in无法用索引是错误的!

有了这个结论,就可以很简单的应用于轻量级框架了:

代码如下:

g高性能php_高性能和12核-图2

$db=dblink();

$sql="select id from collect where vtype=$vtype";

$db-execute($sql);

$strpage=$db-strpage(); //将分页字符串保存在临时变量,方便输出

while($rs=$db-fetch_array()){

$strid.=$rs['id'].',';

}

$strid=substr($strid,0,strlen($strid)-1); //构造出id字符串

$db-pagesize=0; //很关键,在不注销类的情况下,将分页清空,这样只需要用一次数据库连接,不需要再开;

$db-execute("select id,title,url,sTime,gTime,vtype,tag from collect where id in ($strid)");

php while($rs=$db-fetch_array()):

tr

td$amp;amp;$amp;nbsp; php echo $rs['id']; $amp;amp;$lt;/td

td$amp;amp;$amp;nbsp; php echo $rs['url']; $amp;amp;$lt;/td

td$amp;amp;$amp;nbsp; php echo $rs['sTime']; $amp;amp;$lt;/td

td$amp;amp;$amp;nbsp; php echo $rs['gTime']; $amp;amp;$lt;/td

td$amp;amp;$amp;nbsp; php echo $rs['vtype']; $amp;amp;$lt;/td

td$amp;amp;$amp;nbsp;a act=showid= php echo $rs['id']; $amp;quot;$ target="_blank"$amp;amp;$lt; php echo $rs['title']; $amp;amp;$lt;/a$amp;amp;$lt;/td

td$amp;amp;$amp;nbsp; php echo $rs['tag']; $amp;amp;$lt;/td

/tr

php endwhile;

/table

php

echo $strpage;

小小的索引+一点点的改动就使mysql 可以支持百万甚至千万级的高效分页!

通过这里的例子,我反思了一点:对于大型系统,PHP千万不能用框架,尤其是那种连sql语句都看不到的框架!因为开始对于我的轻量级框架都差点崩溃!只适合小型应用的快速开发,对于ERP,OA,大型网站,数据层包括逻辑层的东西都不能用框架.如果程序员失去了对sql语句的把控,那项目的风险将会成几何级数增加!尤其是用mysql 的时候,mysql 一定需要专业的dba 才可以发挥他的最佳性能.一个索引所造成的性能差别可能是上千倍!

怎样用PHP逐行读取数G的大文件最有效率且不会搞爆内存

你需要安装php运行环境,才能解析php文件!百度phpstudy!一键安装,然后把php放在phpstudy的网站目录!然后就可以用sublime编写!然后测试! 要直接sublime+浏览器只可以运行html+script! 欢迎拍砖

最高哪个php版本支持iis6

先从字面意思上理解,Thread Safe是线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源.Non Thread Safe是非线程安全,在执行时不进行线程(Thread)安全检查.

再来看PHP的两种执行方式:ISAPI和FastCGI.

ISAPI执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率,所以如果是以ISAPI来执行PHP,建议选择Thread Safe版本;

而FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以FastCGI来执行PHP,建议选择Non Thread Safe版本.

user读取运行权限,

; The FastCGI handler will look for this file in the same directory as

; fcgiext.dll. By default, the FastCGI installer will place this file into

我个人的理解是,只要"Web 服务扩展"里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射.

g高性能php_高性能和12核-图3

php=PHP

[PHP]

ExePath=X:Server_CorePHPphp-cgi.exe

这里要用:""不能用"/","php"表示扩展名,"PHP"是配置节名称,以"[PHP]"定义. (选你自己的安装的目录,下同.)

; Defines the default timezone used by the date functions

; http//php.net/date.timezone

更改为并去除前面的";":

; On windows:

; extension_dir = "ext"

extension_dir = "X:Server_CorePHPext"

找到:fastcgi.impersonate = 1;这句,把前面的;去掉, fastcgi.impersonate = 1

如下图:

找到:short_open_tag= Off;改为

;extension=php_curl.dll

;extension=php_gmp.dll

;extension=php_intl.dll

;extension=php_imap.dll

;extension=php_interbase.dll. a! M+ _) z: _ P* @

extension=php_ldap.dll

;extension=php_ming.dll

extension=php_mysql.dll

extension=php_mysqli.dll

;extension=php_openssl.dll

;extension=php_pdo_firebird.dll

;extension=php_pdo_mssql.dll

;extension=php_pdo_mysql.dll

;extension=php_pdo_odbc.dll

;extension=php_pdo_sqlite.dll

;extension=php_phar.dll

;extension=php_pspell.dll

;extension=php_shmop.dll

;extension=php_sockets.dll

;extension=php_sqlite.dll

;extension=php_sybase_ct.dll

;extension=php_xmlrpc.dll

;extension=php_zip.dll

PHP安装目录的权限,NETWORK_SERVICE的读和运行权限

网站所在目录的权限,IUSR_***(Internet来宾账户)的读取和运行权,需要写入的目录单独再给写入权

" m: |: h# L' b% y; }

修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务,这步很重要!

测试是否安装成功!

文件:phpinfo.php

phpinfo();

看到类似以下效果说明你的服务器可以跑 php 了.

链接:

以上就是土嘎嘎小编为大家整理的g高性能php相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章