php实现ftp上传下载文件的例证,文件读取与读取

作者: 韦德国际1946手机版  发布:2019-08-06

实现格局:

一,读取文件

php的代码如下

一般说来来讲在php读取大文件的时候,我们选择的章程一般是一行行来说取,并非一次性把文件全体写入内部存款和储蓄器中,那样会招致php程序卡死,上面就给大家介绍那样一个例证。

  1. 直白动用file函数来操作
    注: 由于 file函数是二回性将持有内容读入内部存款和储蓄器,而php为了以免万一有个别写的比较倒霉的次序占用太多的内部存款和储蓄器而导致系统内部存款和储蓄器不足,使服务器出现宕机,所以默许意况下 限制只可以最大利用内部存储器16M,那是透过php.ini里的memory_limit = 16M来拓展设置,那么些值固然设置-1,则内存使用量不受限制.
    下边是一段用file来抽出那具文件最终一行的代码.
    一切代码实行完结耗费时间 116.9613 (s).

韦德国际1946手机版,先解释一下,什么是读取文件本人,什么叫读取文件输入内容。举例test.php里面包车型地铁开始和结果<?php  echo "test"; ?>

php实现ftp上传下载文件的例证,文件读取与读取文件输出内容例子。 代码如下

读取大文件最后几行数据:

 代码如下

1,读取文件自个儿正是读取文件内享有内容,读取后就能够博得<?php  echo "test"; ?>
2,读取文件输出内容是读取文件所表现出来的东西,读取后获得test

$ftp_server='www.111cn.net';//服务器
$ftp_user_name='111cn.net';//用户名
$ftp_user_pass='password';//密码
$ftp_port='21';//端口
$ftp_put_dir='data/photo/thumb/data2';//上传目录

<?php
/**
 * 取文件最后$n行
 * 
 * @param string $filename 文件路径
 * @param int $n 最后几行
 * @return mixed false表示有错误,成功则返回字符串
 */
function FileLastLines($filename, $n){
   if(!$fp = fopen($filename, 'r')){
    echo "打开文件失败,请检查文件路径是否正确,路径和文件名不要包含中文";
    return false;
    }
  $pos = -2;
  $eof = "";
  $str = "";
  while($n > 0){
    while($eof != "n"){
      if(!fseek($fp, $pos, SEEK_END)){
        $eof = fgetc($fp);
        $pos–;
        }else{
        break;
        }
      }
    $str .= fgets($fp);
    $eof = "";
    $n–;
    }
  return $str;
  }

echo nl2br(FileLastLines('sss.txt', 4));
/**
 * * * 取文件最后$n行 *
 * 
 * @param string $filename 文件路径 *
 * @param int $n 最后几行 *
 * @return mixed false表示有错误,成功则返回字符串
 */
function FileLastLines($filename, $n){
  if(!$fp = fopen($filename, 'r')){
    echo "打开文件失败,请检查文件路径是否正确,路径和文件名不要包含中文";
    return false;
    }
  $pos = -2;
  $eof = "";
  $str = "";
  while($n > 0){
    while($eof != "n"){
      if(!fseek($fp, $pos, SEEK_END)){
        $eof = fgetc($fp);
        $pos--;
        }else{
        break;
        }
      }
    $str .= fgets($fp);
    $eof = "";
    $n--;
    }
  return $str;
  }
echo nl2br(FileLastLines('sss . txt', 4));

function tail($fp, $n, $base = 5)
{
  assert($n > 0);
  $pos = $n   1;
  $lines = array();
  while(count($lines) < = $n){
    try{
      fseek($fp, - $pos, SEEK_END);
      }
    catch (Exception $e){
      fseek(0);
      break;
      }
    $pos *= $base;
    while(!feof($fp)){
      array_unshift($lines, fgets($fp));
      }
    }
  return array_slice($lines, 0, $n);
  }
var_dump(tail(fopen("access.log", "r "), 10));
$fp = fopen($file, "r");
$line = 10;
$pos = -2;
$t = " ";
$data = "";
while ($line > 0){
  while ($t != "n"){
    fseek($fp, $pos, SEEK_END);
    $t = fgetc($fp);
    $pos --;
    }
  $t = " ";
  $data .= fgets($fp);
  $line --;
  }
fclose ($fp);
echo $data;
?>

ini_set('memory_limit','-1');
$file = 'access.log';
$data = file($file);
$line = $data[count($data)-1];
echo $line;

二,fopen方法

$ftp_conn_id = ftp_connect($ftp_server,$ftp_port);
$ftp_login_result = ftp_login($ftp_conn_id, $ftp_user_name, $ftp_user_pass);

读者可以依附该实例特点加以勘误和宏观,使之特别契合本身行使须要。

自家机器是2个G的内部存款和储蓄器,当按下F5运行时,系统直接变灰,大致20分钟后才苏醒过来,可知将这么大的文书全部一直读入内部存款和储蓄器,后果是有一点点严重,所以不在万不得以,memory_limit那东西无法调得太高,不然独有打电话给机房,让reset机器了.
2.直接调用linux的tail命令来显示最终几行
在linux命令行下,能够直接行使tail -n 10 access.log很随便的展现日志文件最终几行,能够一向用php来调用tail命令,执行php教程代码如下.
全部代码实施达成耗费时间 0.0034 (s)

1,读取文件自个儿
 
<?php 
$filename = "test.php"; 
$handle = fopen($filename, "r"); 
$contents = fread($handle, filesize ($filename)); 
fclose($handle); 
echo strlen($contents); 
?> 

if((!$ftp_conn_id) || (!$ftp_login_result)) {
echo'连接到ftp服务器失利';
exit;
}else{

本文由韦德国际1946发布于韦德国际1946手机版,转载请注明出处:php实现ftp上传下载文件的例证,文件读取与读取

关键词: 伟德betvictor1

上一篇:php文件上传类,php文件上传代码
下一篇:没有了