当前位置:  编程技术>php
本页文章导读:
    ▪用PHP连mysql和oracle数据库性能比较       测试硬件说明: 测试使用的是我的爱机,配置如下: CPU:C433 内存:128M 硬盘:酷鱼2代20G 测试软件说明: WIN32下用的是windows nt server4,sp5,apache 1.3.12,php3.0.15和php4rc1,mysql 3.22.29,oracle 8.0.5 linux.........
    ▪利用文件属性结合Session实现在线人数统计       <?phpob_start();session_start();$num=0;$dirpt    =    "online";$reftime    =    1;if (is_dir($dirpt) && $dir = opendir($dirpt)) {  while (($file = readdir($dir)) !== false) {    if(strcmp($file,"..")==0 || strcmp($fil.........
    ▪PHP中上传大体积文件时需要的设置       不用说,还得找PHP配置文件php.ini的麻烦:)打开php.ini,首先找到; File Uploads ;区域,有影响文件上传的以下几个参数:file_uploads  =  on  ;是否允许通过HTTP上传文件的开关。默认为ON即是开.........

[1]用PHP连mysql和oracle数据库性能比较
    来源: 互联网  发布时间: 2013-11-30
测试硬件说明:
测试使用的是我的爱机,配置如下:
CPU:C433
内存:128M
硬盘:酷鱼2代20G

测试软件说明:
WIN32下用的是windows nt server4,sp5,apache 1.3.12,php3.0.15和php4rc1,mysql 3.22.29,oracle 8.0.5
linux下用的是bluepoint linux1.0, apache 1.3.12, php4rc1,mysql 3.22.32

测试代码说明:
使用一个很简单的表,mysql和oracle使用的表结构是一样的,都只有三个字段,结构如下:
mysql的表结构:
CREATE TABLE board (
   board_id smallint(6) NOT NULL auto_increment,
   board_name char(16) NOT NULL,
   board_manager char(20),
   PRIMARY KEY (board_id)
);
oracle的结构:
CREATE TABLE PHP_ORACLE."BOARD"
       ("BOARD_ID" FLOAT,
       "BOARD_NAME" CHAR(16) NOT NULL,
       "BOARD_MANAGER" CHAR(20)) ;

我们只测试了INSERT操作花的时间,对于select,并未作测试。
因为win32下只有PHP3才能连接oracle数据库,所以只测试了用PHP3连接oracle的性能。相 信在PHP4的正式版本出来后,用PHP4连接oracle的速度应该有所提升。
而在LINUX下,因为我没有装oracle,所以只测试了mysql的性能。据说在LINUX下,oracle 的性能不错,只是无法测试。
并且我们将所有的用于数据库连接和oracle用来分析sql语句的代码都放在了统计代码之外 ,所以测试得出的时间只是用于执行SQL操作所花费的时间。

用来测试mysql的程序:

<?php
$dblink=mysql_connect("localhost","root","shh123");
mysql_select_db("bbs");
$counter=1;
set_time_limit(300);
$query="insert into board (board_name,board_manager) values ('test','test')";
$begin_time=time();
for ($i=1;$i<=10000;$i++){
        mysql_db_query("bbs",$query);
    $counter++;
}
$end_time=time();
mysql_close($dblink);
echo "test db speed...<br>";
echo "begin time:".$begin_time."<BR>";
echo "<BR>end time:".$end_time."<BR>";
$total=$end_time-$begin_time;
echo "total spent time:".$total;
?>

用来测试oracle的程序:

<?php
$handle=OCILogon("php_oracle","php_oracle");

$counter=1;
set_time_limit(300);
$query="insert into board (board_id,board_name,board_manager) values (:board_id,'test','test')";
$state=OCIParse($handle, $query);
OCIBindByName($state, ":board_id", &$i,32);
$begin_time=time();
for ($i=1;$i<=10000;$i++){
        ociexecute($state);
}
$end_time=time();
OCIFreeStatement($state);
ocilogoff($handle);
echo "test db speed...<br>";
echo "begin time:".$begin_time."<BR>";
echo "<BR>end time:".$end_time."<BR>";
$total=$end_time-$begin_time;
echo "total spent time:".$total;
?>

测试结果:

环境:win32+apache+php4+mysql
结果:28秒

环境:win32+apache+php3+mysql
结果:34秒

环境:win32+apache+php3+oracle8.0.5(oci函数)
结果:46秒

环境:linux+apache+php4+mysql
结果:10秒

结论:
在WIN32下,mysql的性能虽然不是很好,但和oracle8比起来,还是要快很多,尤其是我在 测试程序中,并没有将数据库连接的语句包括进来,所以这个测试结果只是插入数据所花费 的时间,而oracle的连接,天,太慢了!在我的机器上,连接一次,至少1-2秒钟。 而在LINUX下,mysql的性能相对于在WIN32下,又有了一个很大的飞跃。由28秒骤减到10秒。 所以,如果你不需要存储过程的支持,并且数据库量不是大的那么惊人的话,还是在LINUX 下使用mysql作为你的数据库吧!这个轻量级的数据库可以给你最佳的性能、可管理性和相 当不错的安全性。 

    
[2]利用文件属性结合Session实现在线人数统计
    来源: 互联网  发布时间: 2013-11-30

<?php
ob_start();
session_start();
$num=0;
$dirpt    =    "online";
$reftime    =    1;

if (is_dir($dirpt) && $dir = opendir($dirpt)) {
  while (($file = readdir($dir)) !== false) {
    if(strcmp($file,"..")==0 || strcmp($file,".")==0){
        continue;
    }
    $D_[date("Y-m-d H:i:s",filemtime($dirpt."/".$file))]=$file;
    $num++;
    unset($cum);
  }  
  closedir($dir);
  $filename    =    session_id();
  $fp        =    fopen($dirpt."/".$filename,"w");
  fputs($fp,"");
  fclose($fp);

  $ntime    =    date("Y-m-d H:i:s",mktime(date("H"),date("i")-1,0,date("m"),date("d"),date("Y")));
  $D_[$ntime]="-";
  krsort($D_);
  $onlinenumber=0;
  while(1){
    $vkey=key($D_);
    $onlinenumber++;
    if(strcmp($ntime,$vkey)==0){
        break;
    }else{
        array_shift($D_);
    }
  }
  array_shift($D_);
  reset($D_);
  while(count($D_)>0){
    $ckey=key($D_);
    unlink($dirpt."/".$D_[$ckey]);
    if(!next($D_)){
        break;
    }
  }

}else{
    @chmod("..",0777);
    @mkdir($dirpt,0777);

}
$online=$onlinenumber-1;
$retime=60*$reftime;
echo "当前在线<strong><font color=red>$online</font></strong>人<meta http-equiv=refresh content=\"{$retime},url=\">";
ob_end_flush();
?>
<!--
   《利用文件属性结合Session进行在线人数统计》

    作者:sports98
编写日期: 2003-3-19
-->


    
[3]PHP中上传大体积文件时需要的设置
    来源: 互联网  发布时间: 2013-11-30

不用说,还得找PHP配置文件php.ini的麻烦:)

打开php.ini,首先找到

; File Uploads ;

区域,有影响文件上传的以下几个参数:

file_uploads  =  on  ;是否允许通过HTTP上传文件的开关。默认为ON即是开

upload_tmp_dir  ;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹

upload_max_filesize  =  8m  ;望文生意,即允许上传文件大小的最大值。默认为2M




; Data Handling ;

区域,还有一项:

post_max_size  =  8m ;指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M


一般地,设置好上述四个参数后,上传<=8M的文件是不成问题,在网络正常的情况下。


但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。除非你的网络真有100M/S的上传高速,否则你还得关心关心下面的参数:

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;


max_execution_time  =  600 ;每个PHP页面运行的最大时间值(秒),默认30秒

max_input_time = 600 ;每个PHP页面接收数据所需的最大时间,默认60秒

memory_limit  =  8m  ;每个PHP页面所吃掉的最大内存,默认8M


把上述参数修改后,在网络所允许的正常情况下,就可以上传大体积文件了。

好了,设置好现在就可以一试。点击一200大M的文件上传一下
在你听歌、想MM或上厕所回来过程中,程序会告诉你上传成功啦~

在本机上测试上传200M的文件成功。

Luck~~


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
网络技术 iis7站长之家
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3