php读取目录中所有文件名(含子目录)

php中取出目录下的文件名的方式不少,最简单的scandir

$dir="./caxa/";
$file=scandir($dir);
print_r($file);

稍微复杂点的,来自于php手册

$dir = "/etc/php5/";
// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
} closedir($dh);
}
}

这些都只能读取当前指定目录下的文件,对子目录中的文件无法。原来自己写过一个循环删除所有目录的一段代码,需要逐个子目录删除所有文件,包括多层。但是只需要读出文件名,稍微复杂点,网上找到一个能用,原始代码有错误提示,改了一下引用&$data的地方
来源:http://topic.csdn.net/t/20040423/08/2998881.html

function searchDir($path,&$data){
if(is_dir($path)){
$dp=dir($path);
while($file=$dp->read()){
if($file!='.'&& $file!='..'){
searchDir($path.'/'.$file,$data);
}
}
$dp->close();
}
if(is_file($path)){
$data[]=$path;
}
}

function getDir($dir){
$data=array();
searchDir($dir,$data);
return   $data;
}

print_r(getDir('.')); 

PHP_pdo 连接

PDO的连接通过创建pdo基础类时实现,无须其他驱动,你只需要使用PDO类名。该构造器参数需指明数据库来源,根据连接需要提供数据库的用户名和密码参数。
一个连接mysql的例子:

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

如果在连接过程中产生错误,PDO异常对象将抛出。如果你想处理这些错误情况就可以捕捉这些异常。
处理连接错误的例子:

try {
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
foreach($dbh->query('Select * from FOO') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: \" . $e->getMessage() . \"
\";
die();
}
?> 

持续连接:

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
PDO::ATTR_PERSISTENT => true
));
?>

读取文件头判断文件类型的php代码

$filename = "D:/296.mid";
$file = fopen($filename, "rb");
$bin = fread($file, 2); //只读2字节
fclose($file);
$strInfo = @unpack("C2chars", $bin);
$typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
$fileType = '';
switch ($typeCode)
{
case 7790:
$fileType = 'exe';
break;
case 7784:
$fileType = 'midi';
break;
case 8297:
$fileType = 'rar';
break;
case 255216:
$fileType = 'jpg';
break;
case 7173:
$fileType = 'gif';
break;
case 6677:
$fileType = 'bmp';
break;
case 13780:
$fileType = 'png';
break;
default:
echo 'unknown';
}
echo 'this is a(an) '.$fileType.' file:'.$typeCode;
?>

linux下php还有个函数可以判断文件类型

echo mime_content_type('php.gif') . "\n";
echo mime_content_type('test.php');
?>

暂停用drupal建站,继续学习中

简略的搜索了一下,Drupal 需要进行大量的数据库操作,特别是对于验证的用户和定制的模块。数据库常常会成为产生瓶颈的原因。我看了下数据表,drupal 5有51个数据表,D6少一个有50个(对比wordpress才10个表)。虽然暂时这个主机的数据库还能行,但是一旦数据量逐渐增加,对数据库的要求会越来越高,需要对数据库进行优化。
看来还是暂缓用drupal架站,还是在本地练练手再说了。万一有需要的时候就可以拉出来试试。