|
|
|
| Как прочитать и вывести содержимое файла леж. на другом серваке(не на том, на котором скрипты). fopen здесь не подойдет.
Может через ФТП как? | |
|
|
|
|
|
|
|
для: mistersmak
(06.11.2005 в 20:41)
| | Э-эй где все? | |
|
|
|
|
|
|
|
для: mistersmak
(06.11.2005 в 21:35)
| | Ау-у!! Помогите плиз!! Ну что, никто не знает? | |
|
|
|
|
|
|
|
для: mistersmak
(06.11.2005 в 22:58)
| | Это делается через сокеты. Как и с чем их едят, тов. cheops рассказывал тут:
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=600
ЗЫ: Дык воскресенье, вечер... | |
|
|
|
|
|
|
|
для: mistersmak
(06.11.2005 в 20:41)
| | А почему fopen() не проходит? Запрещено на сервере? | |
|
|
|
|
|
|
|
для: cheops
(06.11.2005 в 23:40)
| | Да, и file(); вроде бы никто не отменял... | |
|
|
|
|
|
|
|
для: DDK
(07.11.2005 в 01:18)
| | На том на сервере, где скрипты лежат не запрешено, но файлы лежат на другом. | |
|
|
|
|
|
|
|
для: 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($acc, 0, 1) != '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>";
?>
|
| |
|
|
|
|
|
|
|
для: mistersmak
(07.11.2005 в 05:49)
| | > "Вы скачиваете файл Имя файла"
Ну это сложно обойти - так как делается на уровне apache | |
|
|
|
|
|
|
|
для: cheops
(07.11.2005 в 19:34)
| | Да нет же, обойти это нетрудно, просто сделать файлу расширение, которого не знает сервак (например те же .music, .arhiv, .text, .image)
Так скажите почему так долго грузится? И почему выводит вне таблицы содержание файла.
З.Ы. (просто небольшое разъяснение)
Допустим есть архив: my.rar
На сервере: my.rar.arhiv
Описание: my.rar.arhiv.about | |
|
|
|
|
|
|
|
для: mistersmak
(07.11.2005 в 21:18)
| | Ну по FTP понятно - это не слишком быстрая штука, а без FTP вы как его загружаете? | |
|
|
|
|
|
|
|
для: cheops
(08.11.2005 в 00:25)
| | Просто по прямой ссылке, например http://www.server.ru/files/file.rar.arhiv
На зеркале это осушествляется за счет хтмл =) - когда выкладывается файл, ссылка и описание пишется вручную - прямо в download.html => Иногда появляются битые ссылки
Суть в том, чтобы упростить задачу - считывание всех сушествующих файлов - нет файла - нет ссылки.
Помогите плз!!!
З.Ы. тормозить начало после добавления вывода файлов по категориям
может там че-то напортачено? | |
|
|
|
|
|
|
|
для: 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");
?>
|
Может в этом дело? | |
|
|
|
|
|
|
|
для: 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($acc, 0, 1) != '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)
);
|
Работает ГОРАЗДО быстрее, но все равно не очень.
Может есть какой-нибудь альтернативный вариант?
Может скрипт прочтения директории сменить? Есть что-нибудь побыстрее? | |
|
|
|
|
|
|
|
для: DDK
(07.11.2005 в 01:18)
| | Ау-у-у!!!! Хэлп ми самван!!! | |
|
|
|