因为写的代码有问题,在遍历空文件目录的时候,经常会出现无响应的现象,超过了30个查询<?php 
//require_once '../config.php'; //FTP连接
class ftp_sync
{
    // set up basic connection
    private $ftp_server;
    private $ftp_user;
    private $ftp_pass;    var $ftpconn;
    var $local_file;//本地文件路径
    var $server_file;
 
    public function __construct($ftp_server,$ftp_user,$ftp_pass)
    {
$this->ftp_server = $ftp_server;
$this->ftp_user = $ftp_user;
$this->ftp_pass = $ftp_pass;
$this->FtpLogin();
    }
    
public function FtpLogin() 
{
// connect ftp
$ftp_conn = ftp_connect($this->ftp_server); 
// login with username and password
@$login_result = ftp_login($ftp_conn, $this->ftp_user, $this->ftp_pass); 
// check connection
if ( !$ftp_conn || ! $login_result) {
die("FTP connection has failed!");
}
else
{
//echo "Ftp is connected!<br><br><br><br>";echo time()."<br>";
}
$this->ftpconn = $ftp_conn;
return $this->ftpconn;

}//同步文件
public function FtpSync() 
{
$server_file = $this->server_file;
$ftpconn     = $this->ftpconn;

$local_file  = ltrim($server_file, '/');
//echo  $local_file."<br>";
$local_file  = str_replace('pub/', '', $local_file);
//echo  $local_file."<br>";
//目录不存在 重新创建
$folder = strrpos($local_file, '/');
if ($folder !== FALSE) {
$local_folder = substr($local_file, 0, $folder) . '/';
}
if ( ! is_dir($local_folder) ) {
mkdir($local_folder, 0775, TRUE);
}
// download the file
$rs = ftp_get($ftpconn, $local_file, $server_file, FTP_BINARY);
if ( $rs ) {

if ( ! file_exists($local_file) )
echo "Successfully written to {$local_file}.<br />";
else
echo "Successfully rewritten to {$local_file}.<br />";
} else {
echo "There was a problem on {$local_file}.<br />";
}
}

function isFtpDir($filename)
{
if(ftp_size($this->ftpconn,$filename)!=-1)
{
//print "test this is a file<br>";
return false;

}
else
{
//print "test this is dir<br>";
return true;

}
//$this->FtpClose();
}
//关闭FTP连接
public function FtpClose()
{
    ftp_close($this->FtpLogin());
}
//递归FTP文件夹及文件,将文件(夹)显示出来,$directoryname为要同步列出的目录名
public function FtpFileList($directoryname)
{
//echo $this->echoe;
$result = array();
$ftplist = array();
$ftplist = ftp_nlist($this->ftpconn,$directoryname);

 
//
//print_r($ftplist);
if(!empty($ftplist))
{
foreach($ftplist as $varlist)
{

$varlist =iconv('','UTF-8',$varlist);//--file
//echo "1<br>";
    $varlist= $directoryname."/".$varlist;//--//file
    //echo "2<br>";
    $varlist= str_replace("//","/",$varlist);//--/file
    //echo "3<br>";
    if (in_array($varlist,array('.','..'))) continue; 
if($this->isFtpDir($varlist))
{

$this->FtpFileList($varlist);
print "..".$varlist."/<br>";//--../file/
//$this->server_file = $varlist;
//$this->FtpSync();
//$varlist =array();
//array_push($result,$varlist);

}
else
{
print "..".$varlist."<br>";
$this->server_file = $varlist;
//print ftp_size($this->ftpconn,$varlist);
$this->FtpSync();
//print "..".$varlist."/<br>";
}
//print_r($varlist);
//}


return $result;
}
else
{
//print_r($ftplist);
}
//array_push($result,$result);
//print "<pre>";
//print_r($result);
//print "</pre>";
}
public function __destruct()
{
$this->FtpClose();
}

}
//实现同步/*
$var_do = new ftp_sync();
$var_do->ftp_server = $CONFIG['ftp.class.php']['ftp_server'];
$var_do->ftp_user = $CONFIG['ftp.class.php']['ftp_user'];
$var_do->ftp_pass = $CONFIG['ftp.class.php']['ftp_pass'];
$var_do->server_file = $CONFIG['ftp.class.php']['server_file'];
$var_do->FtpLogin();
$var_do->FtpFileList("通知");
$var_do->FtpClose();
*/
//print $var_do->ftp_server;
//print $var_do->TestFunction();
//$conn = loginFtp();
//$file = '/pub/files/msnlite.exe';
//synchronize($file, $conn);// close the FTP stream
//ftp_close($conn);
?>
上面是代码,在调用FTPFILELIST函数的时候会由于超时的问题无响应,这个应该怎么处理,多线程还是什么办法还有一点是PHP的路径怎么表示,/dir/还是../dir还是../dir/什么的,应该如何表示有没有参照的东西学习下顺便问下printer_open printer_start_page()函数,能够调用打印机打印,但是打印出的东西却是空白内容,这个怎么回事?