Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Прочитать содержимое файла с другого сервера
 
 автор: mistersmak   (06.11.2005 в 20:41)   письмо автору
 
 

Как прочитать и вывести содержимое файла леж. на другом серваке(не на том, на котором скрипты). fopen здесь не подойдет.
Может через ФТП как?

   
 
 автор: mistersmak   (06.11.2005 в 21:35)   письмо автору
 
   для: mistersmak   (06.11.2005 в 20:41)
 

Э-эй где все?

   
 
 автор: mistersmak   (06.11.2005 в 22:58)   письмо автору
 
   для: mistersmak   (06.11.2005 в 21:35)
 

Ау-у!! Помогите плиз!! Ну что, никто не знает?

   
 
 автор: DDK   (06.11.2005 в 23:09)   письмо автору
 
   для: mistersmak   (06.11.2005 в 22:58)
 

Это делается через сокеты. Как и с чем их едят, тов. cheops рассказывал тут:
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=600

ЗЫ: Дык воскресенье, вечер...

   
 
 автор: cheops   (06.11.2005 в 23:40)   письмо автору
 
   для: mistersmak   (06.11.2005 в 20:41)
 

А почему fopen() не проходит? Запрещено на сервере?

   
 
 автор: DDK   (07.11.2005 в 01:18)   письмо автору
 
   для: cheops   (06.11.2005 в 23:40)
 

Да, и file(); вроде бы никто не отменял...

   
 
 автор: mistersmak   (07.11.2005 в 05:18)   письмо автору
 
   для: DDK   (07.11.2005 в 01:18)
 

На том на сервере, где скрипты лежат не запрешено, но файлы лежат на другом.

   
 
 автор: mistersmak   (07.11.2005 в 05:49)   письмо автору
 
   для: DDK   (07.11.2005 в 01:18)
 

Все, это просто глюки были. Мои =)
Вот лучше подскажите. Пытался сделать Давнлоад - через ФТП считывает все содержимое папки и выводит списком. К каждому файлу пришито расширение его категории (.arhiv, .music, .text, и т.д.)
Это нужно не только чтоб делить на категории, но и потому, что один "малоизвестный" сервер всюду вставляет свою страничку "Вы скачиваете файл Имя файла" с ... =)
А если расширение левое (любое из вышеперечисленных), то он не пихает эту страницу.
К каждому файлу есть описание - файл с расширением .about
Вот он-то и должен прочитываться. он прочитывается, но выводится сверху, а не в нужной ячейке - это проблема №1.
Проблема №2 гораздо хуже - О-О-О-ОЧЕНЬ долго грузится
Хэлп ламеру плиззз!!!
Вот файлы(и в архиве):

download.php
<a class=admin_link href=filelist.php?checkedcath=arhiv target=ddfr>Архивы</a>
<a class=admin_link href=filelist.php?checkedcath=text target=ddfr>Тексты</a>
<a class=admin_link href=filelist.php?checkedcath=document target=ddfr>Документы</a>
<a class=admin_link href=filelist.php?checkedcath=image target=ddfr>Картинки</a>
<a class=admin_link href=filelist.php?checkedcath=music target=ddfr>Музыка</a>
<a class=admin_link href=filelist.php?checkedcath=other target=ddfr>Прочее</a><br>
<iframe name="ddfr" frameborder="0" width=100% height=100%></iframe>
filelist.php
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<?
 $host
="***";
 
$user="***";
 
$pass="***";
 
set_time_limit(180);
 @
$conn ftp_connect($host);
 if(!
$conn) { echo "<center><b>Не удалось соединиться!</b><br>"; }
 @
$regi ftp_login($conn$user$pass);
 if(
$conn && !$regi) { echo "<center><b>Не удалось зарегистрироваться!</b><br>"; }
//-------------------------------------------------------------------------
 
if(isset($_GET['folder']) && $_GET['folder'] != "%"$folder $_GET['folder'];
 else 
$folder "/";
 
$folder str_replace("%""/"$folder);
 
$folder $folder."files/";
 @
$file_list ftp_rawlist($conn$folder);
 echo 
"<table border=1>";
 echo 
"<tr><td>Файл</td><td>Категория</td><td>Вес</td><td>Описание</td><td>Выложил</td>";
 if(!empty(
$file_list))
  {
   foreach(
$file_list as $file)
    {
     list(
$acc$bloks$group$user$size$month$day$year$file) = preg_split("/[\s]+/"$file);
     if(
substr($acc01) != 'd')
      {
       
$about $file.".about";
       @
$aboutfile readfile("http://myserver.ru/files/$about");
       if(!
$aboutfile) { $aboutfile "Нет описания"; }
       echo 
"<tr><td><a href='http://myserver.ru/files/$file'>$file</a></td><td>$checkedcath</td><td>$size</td><td>$aboutfile</td><td>$fileauthor</td></tr>";
      }
    }
  }
 echo 
"</table>";
?>

   
 
 автор: cheops   (07.11.2005 в 19:34)   письмо автору
 
   для: mistersmak   (07.11.2005 в 05:49)
 

> "Вы скачиваете файл Имя файла"
Ну это сложно обойти - так как делается на уровне apache

   
 
 автор: mistersmak   (07.11.2005 в 21:18)   письмо автору
 
   для: cheops   (07.11.2005 в 19:34)
 

Да нет же, обойти это нетрудно, просто сделать файлу расширение, которого не знает сервак (например те же .music, .arhiv, .text, .image)
Так скажите почему так долго грузится? И почему выводит вне таблицы содержание файла.
З.Ы. (просто небольшое разъяснение)
Допустим есть архив: my.rar
На сервере: my.rar.arhiv
Описание: my.rar.arhiv.about

   
 
 автор: cheops   (08.11.2005 в 00:25)   письмо автору
 
   для: mistersmak   (07.11.2005 в 21:18)
 

Ну по FTP понятно - это не слишком быстрая штука, а без FTP вы как его загружаете?

   
 
 автор: mistersmak   (08.11.2005 в 07:01)   письмо автору
 
   для: cheops   (08.11.2005 в 00:25)
 

Просто по прямой ссылке, например http://www.server.ru/files/file.rar.arhiv
На зеркале это осушествляется за счет хтмл =) - когда выкладывается файл, ссылка и описание пишется вручную - прямо в download.html => Иногда появляются битые ссылки
Суть в том, чтобы упростить задачу - считывание всех сушествующих файлов - нет файла - нет ссылки.
Помогите плз!!!
З.Ы. тормозить начало после добавления вывода файлов по категориям
может там че-то напортачено?

   
 
 автор: cheops   (08.11.2005 в 12:23)   письмо автору
 
   для: mistersmak   (08.11.2005 в 07:01)
 

У вас переменная $file используется и в цикле
<?php
foreach($file_list as $file)
?>

и при разборе
<?php
list($acc$bloks$group$user$size$month$day$year$file) = preg_split("/[\s]+/"$file);
?>

и далее при формировании переменной $about
<?php
$about 
$file.".about";
?>

которая идёт как часть аргумента функции readfile()
<?php
@$aboutfile readfile("http://myserver.ru/files/$about");
?>

Может в этом дело?

   
 
 автор: mistersmak   (08.11.2005 в 14:18)   письмо автору
 
   для: cheops   (08.11.2005 в 12:23)
 

Самая большая проблема - readfile из-за нее все так долго грузится. Короче заменил ее - теперь описание добавляется из базы. Но грузится все равно долго =(
Вот новая версия:

<?
 $connect 
mysql_connect('***','***','***');
 
mysql_select_db('***',$connect);
 echo 
"<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>";
 
$host="***";
 
$user="***";
 
$pass="***";
 
set_time_limit(180);
 @
$conn ftp_connect($host);
 if(!
$conn) { echo "<center><b>Не удалось соединиться!</b><br>"; }
 @
$regi ftp_login($conn$user$pass);
 if(
$conn && !$regi) { echo "<center><b>Не удалось зарегистрироваться!</b><br>"; }
//-------------------------------------------------------------------------
 
if(isset($_GET['folder']) && $_GET['folder'] != "%"$folder $_GET['folder'];
 else 
$folder "/";
 
$folder str_replace("%""/"$folder);
 
$folder $folder."files/";
 @
$file_list ftp_rawlist($conn$folder);
 echo 
"<table border=1>";
 echo 
"<tr><td>Файл</td><td>Категория</td><td>Вес</td><td>Описание</td><td>Выложил</td>";
 if(!empty(
$file_list))
  {
   foreach(
$file_list as $file)
    {
     list(
$acc$bloks$group$user$size$month$day$year$ufile) = preg_split("/[\s]+/"$file);
     if(
substr($acc01) != 'd')
      {
       if(
substr($ufile,strrpos($ufile,".")) == ".".$checkedcath)
        {
         
$about mysql_query("select * from about where filename='$ufile'");
         while(
$afile mysql_fetch_array($about,MYSQL_ASSOC)) { $aboutfile $afile["about"]; $fileauthor $afile["author"]; }
         if(empty(
$aboutfile)) { $aboutfile "Нет описания"; }
         if(empty(
$fileauthor)) { $fileauthor "Неизвестен"; }
         echo 
"<tr><td><a href='http://myserver.ru/files/$ufile'>$ufile</a></td><td>$checkedcath</td><td>$size</td><td>$aboutfile</td><td>$fileauthor</td></tr>";
         
$aboutfile ""$fileauthor ="";
        }
      }
    }
  }
 echo 
"</table>";
?>
Вот SQL:
CREATE TABLE about
 (
  id int(8) NOT NULL auto_increment,
  filename text NOT NULL,
  author text NOT NULL,
  about text NOT NULL,
  PRIMARY KEY(id)
 );

Работает ГОРАЗДО быстрее, но все равно не очень.
Может есть какой-нибудь альтернативный вариант?
Может скрипт прочтения директории сменить? Есть что-нибудь побыстрее?

   
 
 автор: mistersmak   (07.11.2005 в 18:26)   письмо автору
 
   для: DDK   (07.11.2005 в 01:18)
 

Ау-у-у!!!! Хэлп ми самван!!!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования