php是一个很盛行的脚本语言,现在许多公司(新浪、优酷、百度、搜狐、淘宝等等)在使用这种语言进行网站开辟。我的这篇文章,我只是盼望可以或许进步你的php脚本性能。请记着你的php脚本性能,许多时间依赖于你的php版本、你的web server环境和你的代码的复杂度。
优化你代码中的瓶颈
Hoare曾经说过“过早优化是一切不幸的根源”。当你想要让你的网站更快运转的时间,你才应该去做优化的事变。当你要改变你代码之前,你需要做的事是什么缘故因由引起了体系迟钝?你可以通过以下引导和其他方式优化你的php,可能是数据库缘故因由也可能是网路缘故因由!通过优化你的php代码,你能尝试着找出你的体系瓶颈。
升级你的php版本
你的团队成员提出,这些年php引擎已经有许多象征性的性能提升。如果你的web server仍然运行着比较老的版本,如php3大概php4。那么在你尝试着优化你代码之前,应该先深入调查一下版本之间的升级环境。
使用缓存
使用缓存模块(如Memcache)大概模板体系(如Smarty)进行缓存处置惩罚。我们可以缓存数据库效果和提取页面效果的方式来提升网站性能。
使用输出缓冲区
当你的脚本尝试着渲染的时间,php会使用内存缓存区生存所有的数据。缓存区可能让你的页面看起来很慢,缘故因由是缓冲区填满所有要响应的数据之后再把效果响应给用户。荣幸的是,你可以或许做一下改变,迫使php强行在缓冲区填满之前把数据响应给用户,这样就会让你的网站看起来更快一些。
克制写幼稚的setters和getters
当你写php类的时间,你可以直接操尴尬刁难象属性,这样能资助你节流时间和提升你的脚本性能。而不是那种让人感到幼稚可笑的setters和getters。下面是一些案例:dog类通过使用setName()和getName()方式来操作name属性。
- class dog {
- public $name = '';
-
- public function setName($name) {
- $this->name = $name;
- }
-
- public function getName() {
- return $this->name;
- }
- }
复制代码
留意:setName()和getName()除了存储和返回name属性外,没做任何工作。- $rover = new dog();
- $rover->setName('rover');
- echo $rover->getName();
复制代码
直接设置和访问name属性,性能能提升100%,而且也能缩减开辟时间!- $rover = new dog();
- $rover->name = 'rover';
- echo $rover->name;
复制代码
没有缘故因由不要copy变量
有时低级phper,为了使代码更加“干净”,常常把已经界说的变量重新赋值给另一个变量。这现实上就导致了双重内存的斲丧(当改变变量的时间),这就导致脚本的性能降落。好比一个用户把一个512KB的变量在额外插入给另一个变量,那么就会导致1MB的内存被斲丧掉。- $description = strip_tags($_POST['description']);
- echo $description;
复制代码
上面的代码没有任何缘故因由,复制了一遍变量。你仅需要使用内联的方式简朴输出变量,而不消额外的斲丧内存。- echo strip_tags($_POST['description']);
复制代码
克制循环做SQL操作
常常犯的错误是把一个SQL 操作放置到一个循环中,这就导致频仍的访问数据库,更紧张的是,这会直接导致脚本的性能低下。以下的例子,你可以或许把一个循环操作重置为一个单一的SQL语句。- foreach ($userList as $user) {
- $query = 'INSERT INTO users (first_name,last_name) VALUES("' . $user['first_name'] . '", "' . $user['last_name'] . '")';
- mysql_query($query);
- }
复制代码
过程:- INSERT INTO users (first_name,last_name) VALUES("John", "Doe")
复制代码
更换这种循环方案,你可以或许拼接数据成为一个单一的数据库操作。- $userData = array();
- foreach ($userList as $user) {
- $userData[] = '("' . $user['first_name'] . '", "' . $user['last_name'] . '")';
- }
- $query = 'INSERT INTO users (first_name,last_name) VALUES' . implode(',', $userData);
- mysql_query($query);
复制代码
过程:- INSERT INTO users (first_name,last_name) VALUES("John", "Doe"),("Jane", "Doe")...
复制代码
到此这篇关于php之性能优化案例的文章就介绍到这了,更多相干php性能优化内容请搜刮草根技术分享从前的文章或继续欣赏下面的相干文章盼望各人以后多多支持草根技术分享! |