1. 不要随便就复制变量
有时候为了使 PHP 代码更加整洁,一些 PHP 新手(包括逐风自己)会把预定义好的变量复制到一个名字更简短的变量中,其实这样做的结果是增加了一倍的内存消耗,只会使程序更加慢。试想一下,在下面的例子中,如果用户恶意插入 512KB 字节的文字到文本输入框中,这样就会导致 1MB 的内存被消耗!
代码如下 | 复制代码 |
坏习惯: $description = $_POST['description']; echo $description; 可以写成: echo $_POST['description']; |
2. 对字符串使用单引号
PHP 引擎允许使用单引号和双引号来封装字符串变量,但是这个是有很大的差别的!使用双引号的字符串告诉 PHP 引擎首先去读取字符串内容,查找其中的变量,并改为变量对应的值。一般来说字符串是没有变量的,所以使用双引号会导致性能不佳。最好是使用字符串连接而不是双引号字符串。
代码如下 | 复制代码 |
坏习惯: $output = "This is a plain string"; 可以写成: $output = 'This is a plain string'; 坏习惯: $type = "mixed"; $output = "This is a $type string"; 可以写成: $type = 'mixed'; $output = 'This is a ' . $type .' string'; |
3. 使用 echo 函数来输出字符串
使用 echo() 函数来打印结果出了有更容易阅读之外,在下个例子中,你还可以看到有更好的性能。
坏习惯:
代码如下 | 复制代码 |
print($myVariable); 可以写成: echo $myVariable; |
4. 不要在 echo 中使用连接符
很多 PHP 程序员(有包括逐风自己)不知道在用 echo 输出多个变量的时候,其实可以使用逗号来分开的,而不必用字符串先把他们先连起来,如下面的第一个例子中,由于使用了连接符就会有性能问题,因为这样就会需要 PHP 引擎首先把所有的变量连接起来,然后在输出,而在第二个例子中,PHP 引擎就会按照循序输出他们。
代码如下 | 复制代码 |
坏习惯: echo 'Hello, my name is' . $firstName . $lastName . ' and I live in ' . $city; 可以写成: echo 'Hello, my name is' , $firstName , $lastName , ' and I live in ' , $city; |
5. 使用 switch/case 代替 if/else
对于只有单个变量的判断,使用 switch/case 语句而不是 if/else 语句,会有更好的性能,并且代码更加容易阅读和维护。
坏习惯:
代码如下 | 复制代码 |
if($_POST['action'] == 'add') { addUser(); } elseif ($_POST['action'] == 'delete') { deleteUser(); } elseif ($_POST['action'] == 'edit') { editUser(); } else { defaultAction(); } 可以写成: switch($_POST['action']) { case 'add': addUser(); break; case 'delete': deleteUser(); break; case 'edit': editUser(); break; default: defaultAction(); break; } |
html代码
代码如下 | 复制代码 |
<script" width=100% src="ajax.js"></script> |
js文件代码
代码如下 | 复制代码 |
var xmlHttp var geturl="conn.php?q="+str |
php操作
代码如下 | 复制代码 |
<?php if (strlen($q) > 0) ?> |
最后再给出数据库
代码如下 | 复制代码 |
DROP DATABASE IF EXISTS `xin`;
|
今天分享一段PHP中多张图片合成一张图片的代码实现,我们可以在图片合成,水印,九宫格等需求下使用到类似这样的图片合成效果,下面一起来看看例子吧。
例子
代码如下 | 复制代码 |
$imgs = array(); <img" width=100% src="pin.jpg"> |
例子
代码如下 | 复制代码 |
<?php |
原理分析
很简单的一个例子我们只要使用foreach遍历数组的值之后再使用strpos($str,$v)>-1来判断数组值是不是在字符串中指定位置了,如果搜索到了就会返回大于或等于0值哦。
定时任务执行php程序有两方法,一种是ignore_user_abort来实现定时操作,另一种是利用系统自带的计划任务来操作,如linux中使用Crontab,夼windows机器使用任务计划即可。下面是网上比较流行的纯PHP实现定时任务的代码,我把他整理完善了下,不过先别急着用,一定要看到最下面。
代码如下 | 复制代码 |
<?php do { |
上面的代码是死循环,即使删除代码文件也无济于事,必须重启WEB才能停止脚本执行。所以我们需要一个执行脚本的开关,我们可以用外部文件引入的方法来实现,在while循环的时候,include开关变量即可。
建立外部引入变量文件 switch.php 内容如下:
代码如下 | 复制代码 |
<?php return 1;//1执行脚本 0退出执行脚本 ?> 改良版的PHP代码 <?php ignore_user_abort(); // 关掉浏览器,PHP脚本也可以继续执行 set_time_limit(600); // 设置程序的执行时间为600秒 // set_time_limit(0); // 设置程序的执行时间为无限长 $interval = 5; // 每隔5秒运行 $switch = include 'switch.php'; while($switch){ $fp = fopen('sjyhome.txt', 'a'); // 打开 sjyhome.txt fwrite($fp,'欢迎来到SJY之家 www.111cn.net $switch \n'); // 往 sjyhome.txt 写入信息 fclose($fp); // 关闭 sjyhome.txt sleep($interval); // 等待5秒 $switch = include 'switch.php'; } exit(); ?> |
把switch.php文件中的return值改为0,则会自动停止运行。想要再次执行,必须把值改为1,并且打开浏览器再执行一次。
如果$switch值为1,那么即使不设置ignore_user_abort(),关闭浏览器照样无法停止循环,甚至删除代码文件也没用,只能等待超时(默认30秒,set_time_limit自定义执行时间)重启WEB服务。
写在后面的话
本方法纵然可以实现定时功能,可是一旦运行该代码文件,这个进程就一直都在了,对于服务器资源的消耗我没测试过,不过有些空间商或许不会允许长时间占线的进程。
如果自己有VPS或服务器的朋友,建议在服务器中做好计划任务,来执行你网站上的脚本
下面介绍使用Linux中的Crontab来实现的两种方法。
关于crontab的使用,可参考文章:Linux计划任务crontab详解
一、在Crontab中使用PHP执行脚本
就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本。
每一小时执行myscript.php如下:
代码如下 | 复制代码 |
#crontab -e 00 * * * * /usr/local/bin/php /home/web/3aj.php /usr/local/bin/php为PHP程序的路径。 |
二、在Crontab中使用URL执行脚本
如果你的PHP脚本可以通过URL触发,你可以使用lynx或curl或wget来配置你的Crontab。
下面的例子是使用Lynx文本浏览器访问URL来每小时执行PHP脚本。Lynx文本浏览器默认使用对话方式打开URL。但是,像下面的,我们在lynx命令行中使用-dump选项来把URL的输出转换来标准输出。
00 * * * * lynx -dump http://你的网址/script.php
下面的例子是使用CURL访问URL来每5分执行PHP脚本。Curl默认在标准输出显示输出。使用”curl -o”选项,你也可以把脚本的输出转储到临时文件。
*/5 * * * * /usr/bin/curl -o temp.txt http://你的网址/script.php
下面的例子是使用WGET访问URL来每10分执行PHP脚本。-q选项表示安静模式。”-O temp.txt”表示输出会发送到临时文件。
*/10 * * * * /usr/bin/wget -q -O temp.txt http://你的网址/script.php
再介绍一下在Windows下php计划任务的实现
1、新建一个3aj.php,内容如下:
代码如下 | 复制代码 |
<? $fp = fopen("3aj.txt", "a+"); fwrite($fp, date("Y-m-d H:i:s") . " 成功了!\n"); fclose($fp); ?> |
2、新建3aj.bat文件,内容如下:
C:\php\php.exe -q D:\web\3aj.php
3、建立WINDOWS计划任务:
开始–>控制面板–>任务计划–>添加任务计划
浏览文件夹选择上面的3aj.bat文件
设置时间和密码(登陆WINDOWS的保存即可了。
4、右键点击计划任务 -> “运行”即可