摘要:
本文目的 本文简要的描述了PHP提供的autoload机制,以及在scake中使用实践。用于减少不必要的文件包含,提高php系统性能。 什么是__autoload php是脚本语言,不同于c++只需要编译一次,php每次执行过程中都需要编译,所以提高php编译效率,可以提高php脚本执行速度。 每次,当你使用一个新的类时,你需要包含这个类文件,然后在new出这个类。当一个脚... 阅读全文
摘要:
原文出处:http://developer.51cto.com/art/200911/165392.htm1. 条件: PHP magic_quotes_gpc=off 写入数据库的字符串未经过任何过滤处理。从数据库读出的字符串也未作任何处理。 数据: $data=”snow”’’sun” ; (snow和sun之间是四个连续的单引号).操作: 将字符串:”snow”’’sun” 写入数据库,结果: 出现sql语句错误,mysql不能顺利完成sql语句,写入数据库失败。数据库保存格式:无数据。输出数据格式:无数据。说明: 对于未经处理的单引号在写入数据库时会使sql语句发生错误。2. 条件: 阅读全文
摘要:
exists (sql 返回结果集为真) not exists (sql 不返回结果集为真) 如下: 表A ID NAME 1 A1 2 A2 3 A3 表B ID AID NAME 1 1 B1 2 2 B2 3 2 B3 表A和表B是1对多的关系 A.ID => B.AID SELECT ID,NAME FROM A WHERE EXIST (SELECT * FROM B WHERE A.ID=B.AID) 执行结果为 1 A1 2 A2 原因可以按照如... 阅读全文
摘要:
原文出处:http://isky000.com/database/mysql-query-cache-summary最近经常有人问我 MySQL Query Cache 相关的问题,就整理一点 MySQL Query Cache 的内容,以供参考。顾名思义,MySQL Query Cache 就是用来缓存和 Query 相关的数据的。具体来说,Query Cache 缓存了我们客户端提交给 MySQL 的 SELECT 语句以及该语句的结果集。大概来讲,就是将 SELECT 语句和语句的结果做了一个 HASH 映射关系然后保存在一定的内存区域中。在大部分的 MySQL 分发版本中,Query 阅读全文
摘要:
本文目的 PHP的全局错误处理,在开发项目的时候很有用,可以帮助开发者快速定位一些问题,提高工作效率。默认情况下,全局错误会直接输出,但是最近开发时使用的一个框架库对全局错误处理进行了设定,导致很多错误信息没有输出,在定位问题上有一定的耗时。所以,研究了一下此库的实现,发现它设定了error_reporting和set_error_handler,导致此现象。现在记录一下这两个函数的用法,作为备... 阅读全文
摘要:
原文出处:http://tonyty163.blog.51cto.com/721698/463515首先确定,在mysql的'plugin_dir'下有ha_innodb_plugin.so和ha_innodb.so两个文件查询'plugin_dir'的路径可以用以下命令mysql> show variables like 'plugin_dir'; +---------------+-----------------------------------+ | Variable_name | Value | +--------------- 阅读全文
摘要:
本文目的最近有个项目需要对数据进行搜索功能。采用的LAMP技术开发,所以自然想到了MySQL的全文检索功能。现在将自己搜集的一些资料小结,作为备忘。MySQL引擎据目前查到的资料,只有MyISAM引擎支持全文检索(full text index),查询效率高。但是有局限,不支持事务和外键。Innodb支持事务和外键,但是不支持全文检索。所以,如果需要全文检索的数据,需要使用MyISAM引擎创建表。MySQL中文全文检索很遗憾,目前mysql不支持中文全文检索。目前有两种解决方案方案1:使用mysql中文检索插件,个人认为可控性较差,虽然使用方便,但是如果后期插件出现问题,比较难解决。优点就是前 阅读全文
摘要:
本文目的本文探讨了php标准扩展sysvshm库中的函数shm_get_var返回变量的copy还是reference。问题背景php标准扩展中的sysvshm提供了php访问共享内存的能力,而且数据的最小粒度是变量,这样可以免去手动变量序列化和反序列化,比另一个标准扩展shmop好使用。但是,如果假设有一个50M的数组放到共享内存中,反复的访问此变量,是否会影响系统性能?如果shm_get_var返回的是变量引用,那么性能开销不大,因为每次返回的都只是内存的“指针”,不会拷贝真实数据。如果返回的是copy呢?那么每访问一次,就需要拷贝50M左右的内存,如果访问频率过大,那么就会导致性能瓶颈。 阅读全文
摘要:
这几天,由于工作原因,需要将一个php写的后台程序重串行执行改成并行执行。这样必然涉及到多线程/多进程相关技术。PHP貌似没有成熟的多线程机制,而有相对成熟的多进程机制。多进程编程,必然涉及到IPC(Inter-Process Communication)。PHP的IPC技术还是相当多的,可以在php源代码目录下(PHP_SRC/ext)看到sysvshm,sysvsem,sysvmsg,shmop等扩展,这些都可以用于IPC,下面简单介绍一下:pcntl - 提供进程相关操作函数sysvsem - 信号量,全称为system V semphore,可以用于限制访问共享资源的进程数目,一般设置 阅读全文
摘要:
本文目的这几天开发了一个PHP CLI程序,用于后台定时调度执行一些任务。此脚本采用了PHP的多进程(pcntl_fork),共享内存和信号量进行IPC和同步。目的是将串行的任务并行执行,缩短执行时间。可是在工作子进程中,访问myql时一直报错,通过mysql_error返回的信息却是冷冷的一句话“MySQL server has gone away”。简单说一句自己挂掉了就完事,太不负责任了。经过仔细搜索,终于发现问题的原因,在此做个分享,也作为备忘。什么导致“MySQL server has gone away”据官方文档描述,主要有以下一些原因导致此异常出现(我粗略的翻译一下,以原文为准 阅读全文