软件开发: 07 2008存档
看了一本讲性能优化的书,挑出其中比较有意思的建议,仅供参考:
1. 同样是加减乘除,int比float和double都要快,所以尽量用int做加法、乘法运算,最后再除法,变回浮点型
2. “&&”符的左右判断可以更考究,比如:if( (strlen(a)>10) && (b>100) )没有 if( (b>100) && (strlen(a)>10) )高效,因为strlen较花时间
3. 对于多层的if-else语句来说,要把可能性最高的放在开始,这样逻辑通常就在第一个判断后执行,避免了总是经过多次判断走到后面的else上
4. 通常switch比if-else快
5. 迭代比递归快
6. 快速字符串比较方法:先比较两个字符串的第一个字符,再全部比较。因为通常待比较的字符压根儿就不同,没必要一来就strcmp这么大动干戈
7. 把字符串以int方式读取来比较能够加快比较速度
8. fprintf比fstream快不了多少,但fgets比getline快很多
1. 同样是加减乘除,int比float和double都要快,所以尽量用int做加法、乘法运算,最后再除法,变回浮点型
2. “&&”符的左右判断可以更考究,比如:if( (strlen(a)>10) && (b>100) )没有 if( (b>100) && (strlen(a)>10) )高效,因为strlen较花时间
3. 对于多层的if-else语句来说,要把可能性最高的放在开始,这样逻辑通常就在第一个判断后执行,避免了总是经过多次判断走到后面的else上
4. 通常switch比if-else快
5. 迭代比递归快
6. 快速字符串比较方法:先比较两个字符串的第一个字符,再全部比较。因为通常待比较的字符压根儿就不同,没必要一来就strcmp这么大动干戈
7. 把字符串以int方式读取来比较能够加快比较速度
8. fprintf比fstream快不了多少,但fgets比getline快很多
目标:搭一个简单的http上传服务,还有客户端
环境:php-4.3
在服务端准备一个action.php,内容如下:
设置php.ini
重启apache使服务生效
客户端upload.php代码:
参考网站:
http://kb.discuz.net/index.php?title=PHP%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0
环境:php-4.3
在服务端准备一个action.php,内容如下:
<?php
// 在 4.1.0 以前的 PHP 中,需要用 $HTTP_POST_FILES 代替 $_FILES。
// 在 4.0.3 以前的 PHP 中,需要用 copy() 和 is_uploaded_file() 来代替 move_uploaded_file()。
$uploaddir = '/tmp/upload/';
$uploadfile = $uploaddir. $_FILES['file']['name'];
print "<pre>";
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploaddir . $_FILES['file']['name']))
{
print "File is valid, and was successfully uploaded. Here's some more debugging info:\n";
print_r($_FILES);
}
else
{
print "Possible file upload attack! Here's some debugging info:\n";
print_r($_FILES);
}
print "</pre>";
?>
设置php.ini
参数 | 设置 | 说明 |
file_uploads | on | 是否允许通过HTTP上传文件的开关。默认为ON即是开 |
upload_tmp_dir | -- | 文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹 |
upload_max_filesize | 2000m | 允许上传文件大小的最大值。默认为2M |
post_max_size | 2000m | 指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M |
说明 | ||
一般地,设置好上述四个参数后,在网络正常的情况下,上传<=8M的文件是不成问题 | ||
但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。除非你的网络真有100M/S的上传高速,否则你还得继续设置下面的参数。 | ||
max_execution_time | 3600 | 每个PHP页面运行的最大时间值(秒),默认30秒 |
max_input_time | 3600 | 每个PHP页面接收数据所需的最大时间,默认60秒 |
memory_limit | 200m | 每个PHP页面所吃掉的最大内存,默认8M |
重启apache使服务生效
客户端upload.php代码:
<?php运行upload.php,即把cookie_log.txt上传。
$ch = curl_init();
$data = array('name' => 'cookie_log.txt', 'file' => '@/home/cookie_log.txt');
curl_setopt($ch, CURLOPT_URL, 'http://localhost/action.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
?>
参考网站:
http://kb.discuz.net/index.php?title=PHP%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0