1
PHP / Рекурсивный подсчет общего количества строк кода
« : 30 Марта 2002, 05:31:33 »
ГГГ... у меня на локальном сервере 136 908 строк кода! гг
В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.
/******
* Считалка - Экспериментальный проект!
*
* Данный файл, при запуске из какой-либо дириктории выведет на
* экран броузера общее кол-ко PHP кода во всех файлах в этой
* дириктории и во всех поддирикториях!
*
* Автор: А. Куликов aka Dolce -- [email]alex@koulikov.cc[/email]
* Версия: 1.0
* Дата: 30.03.2002
***************/
/**
* _readDir() - считывает список всех поддирикторий, начиная от
*
заданного пути.
*
* @param $path
* @return (array)
*/
function _readDir($path=""){
//echo "OPENING PATH :: " . $path . "
$dir_tree = array();
$d = dir($path);
while($entry = $d->read()){
if(!stristr($entry,\'.\')){
$dir_tree[$entry] = $entry;
}
}
unset($dir_tree[\'templates\']);
$d->close();
return $dir_tree;
}
/**
* _readPHP() - считывает список всех PHP файлов из дириктории, заданой
*
в параметре $path
*
* @param $path
* @return (array)
*/
function _readPHP($path=""){
$dir_tree = array();
$d = dir($path);
while(@$entry = $d->read()){
if(eregi(".php$",$entry)){
array_push($dir_tree,$entry);
}
}
@$d->close();
return $dir_tree;
}
/**
* _readAll() - давайте мыслить рекурсивно!
*
* @param $path
* @return (int)
*/
function _readAll($path=""){
if(is_dir($path)){
$initial = _readDir($path);
}
//are there subdirs?
if(count($initial)>0){
while(list($key,$val)=each($initial)){
if(strlen($path)>0){
$mypath = $path . "/" . $val;
}else{
$mypath = $val;
}
$overall = $overall + _readAll($mypath);
//echo $mypath . "
}
}
//read files
if(is_dir($path)){
$files = _readPHP($path);
}else{
$files = array();
}
while(list($key,$val)=each($files)){
//open each file and check how many lines of code it has
if(strlen($path)>0){
$mypath = $path . "/" . $val;
}else{
$mypath = $val;
}
$file = fopen($mypath, "r");
$rf = fread($file, 20000);
$temp = explode("\\n",$rf);
$tot = count($temp);
//echo "--" . $val . " : lines " . $tot . "
$overall = $overall + $tot;
fclose($file);
}
//echo "<b> TOT: </b>" . $overall;
return $overall;
}
/**
*
* Version: 1.0 Date: 13.01.2002 Author: Koulikov Alexey
global $startTime;
$microtime = microtime();
$microsecs = substr($microtime, 2, 8);
$secs = substr($microtime, 11);
$startTime = "$secs.$microsecs";
/**
* stopTiming() - to stop the timer for script execution
*
* @return end time - float
*
* Version: 1.0 Date: 13.01.2002 Author: Koulikov Alexey
*/
function stopTiming(){
global $startTime;
$microtime = microtime();
$microsecs = substr($microtime, 2, 8);
$secs = substr($microtime, 11);
$endTime = "$secs.$microsecs";
return $tottime;
//Запустим секундомер
$total = _readAll();
switch ($total){
case ($total < 2500):{$status = \'Малютка\'; break;}
case ($total < 5000):{$status = \'Малышь\'; break;}
case ($total < 7500):{$status = \'Почти Середнячок\'; break;}
case ($total < 10000):{$status = \'Середнячок\'; break;}
case ($total < 20000):{$status = \'Крупнячок\'; break;}
case ($total < 30000):{$status = \'Здоровяк\'; break;}
case ($total < 40000):{$status = \'Гигант\'; break;}
default:{$status = \'Супер Гигант\'; break;}
}
echo "Всего вы (а может и не вы) написали <b>" . $total . "</b> строчек кода!
echo "По объективным оценкам, <b>ваш проект - " . $status . "</b>
echo "Этот подсчёт занял: " . stopTiming() . " секунд!";
$word = new COM("word.application") or die("Unable to instantiate Word");
$the_file = "E:\\local\\htdocs\\hello.doc";
#Get and print its version
print "Loaded Word, version {$word->Version}<BR>";
#Make it invisible in a window
$word->Visible = 0;
#Open a document
$word->Application->Documents->Open($the_file);
echo "so, we are here " . $word->Selection->StartOf();
$word->Quit();