在过去的两天里,我看到了两本关于实用PHP编程的参考资料,这是一本在线书籍,既可以作为PHP5和MySQL编程的介绍,也可以作为高级参考资料,其中包含许多有用的技巧。
今天晚上,我浏览了“性能”一章(第18章),发现了一些很酷的东西,包括PHP和MySQL。许多是我已经做了一段时间的常识性事情,但我也在我从其他人那里看到的代码中看到并摇了摇头(在每次迭代时计算循环不变量,不使用传递给函数的变量,不返回来自函数的值,而不是使用函数的返回值)。其他的是新的,让我停下来思考(用’.’运算符连接字符串很昂贵,尤其是在一个操作中不止一次完成时;echo
可以采用逗号分隔的列表)。
一些PHP神话也被打破了,其中一些我一直想知道一段时间。例如,PHP中的注释和空格的数量不是影响性能的因素(并且PHP缓存系统通常会将它们删除);除非发生变量插值,否则双引号并不比单引号昂贵。
它还有一些关于SQL优化的好建议,更重要的是,MySQL服务器优化。例如,作者建议对自创建以来已添加/更新/删除的任何表运行OPTIMIZETABLEtable;
;这将对表进行碎片整理并提供更好的性能。使用CHAR()
与VARCHAR()
;VARCHAR()
节省空间,但MySQL必须计算每次查询时使用了多少空间,以确定下一个字段或记录的开始位置。但是,如果您有任何可变长度字段,您也可以根据需要使用任意多个—或者将可变长度字段(例如TEXT()
字段)拆分到不同的表中以加快搜索速度.执行JOIN
时,比较数字字段而不是字符字段,并且总是JOIN
索引行。
我还没有读完整本书,但浏览了TOC,它的内容有一些潜在的缺陷:
- 它不涵盖PhpDoc它似乎不涵盖单元测试有限的
- 模板解决方案的覆盖范围(尽管它们被提及)有限的使用
- PEAR.作者确实多次提到PEAR,并且经常指出使用某些PEAR模块比使用相应的低级PHP调用(例如,
Mail
和Mail_MIME
,DB
),但在示例中很少使用它们。 - PHP-HTML-PHP…我浏览的所有示例都创建了独立的脚本,这些脚本执行所有HTML输出。虽然我可以在一定程度上欣赏这一点,但我仍然希望看到一本展示PHP中的OOP开发的书,并创建可重用的Web组件。例如,不是创建留言板脚本,而是创建一个可以从任何地方调用的留言板类,元数据指定要使用的数据库和模板。
总而言之,这本书有很多内容——我希望它已经是死树格式,这样我就可以在闲暇时浏览它,而不是坐在电脑前。