0
我使用此代碼來搜索服務器上的PHP文件中的特定代碼。問題是,它通常需要一些時間併發出致命錯誤(超出內存限制)。有沒有辦法讓代碼更「優雅」?PHP文件搜索內存限制
<?php
ini_set('display_errors', 1);
ini_set('memory_limit', '128M');
error_reporting(E_ALL);
define("SLASH", stristr($_SERVER['SERVER_SOFTWARE'], "win") ? "\\" : "/");
if (isset($_POST['path']))
$path = ($_POST['path']) ? $_POST['path'] : dirname(__FILE__) ;
else
$path = dirname(__FILE__) ;
if (isset($_POST['q']))
$q = $_POST['q'];
function php_grep($q, $path){
$temp_array = array();
$ret = '';
$fp = opendir($path);
while($f = readdir($fp)){
if(preg_match("#^\.+$#", $f)) continue; // ignore symbolic links
$file_full_path = $path.SLASH.$f;
if(is_dir($file_full_path)) {
$ret .= php_grep($q, $file_full_path);
} else if(stristr(file_get_contents($file_full_path), $q)) {
$ret .= "$file_full_path\n";
}
}
foreach($temp_array as $t)
$ret .= php_grep1($q, $t);
return $ret;
}
if (isset($_POST['q'])){
$results = php_grep($q, $path);
}
?>
<form method=post>
<input name=path size=100 value="<?php echo $path ?>" /> Path
<input name=q size=100 value="<?php if (isset ($q)) echo $q; else echo 'mysql_connect';?>" /> Query
<input type=submit>
</form>
<?php if (isset($results)) echo $results."<br/>"; ?>
SSH被禁用,所以我不能使用它。 嘆息 grep本來是一個更簡單的解決方案。
謝謝你們。
下一次做:粘貼你的代碼,選擇你的代碼,按'{}' – 2011-05-09 04:29:04