Реклама на сайте Advertise with us

Скрипт - здесь, файл - там. Как скрипту узнать размер файла?

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 15.03.05
Сообщения: 99
Рейтинг: 21

Ссылка на сообщениеДобавлено: 24/02/06 в 03:37       Ответить с цитатойцитата 

Извините за название темы - в полчетвертого ночью после 23 февраля ничего более вразумительно в голову не приходит icon_mad.gif
--------

Сижу вот сейчас и вместо того, что лечь спать, ломаю голову, как решить одну проблемку smail112.gif
У хостера на одном аккаунте живут 2 моих сайта - a.com и b.com. На a.com в папке files лежит много-много файлов. Подскажите, может быть есть какой-то нормальный способ сделать так, чтобы скрипт установленный на b.com мог показывать размер файлов, находящихся в a.com/files/ ? Через обычный filesize как я понимаю сделать это не получиться...

Пока у меня есть 2 варианта, но они какие-то... топорные что ли...

1. Скопировать все файлы из a.com/files/ в b.com/files/ Тогда без проблем можно будет использовать filesize... Если бы файлов было немного, то я бы, наверняка, так и сделал, но в том то и дело, что их много и весят они больше гига...

2. Переместить папку с файлами сайта a.com в папку с файлами сайта b.com.
Т.е. сейчас сделано так:
/home/login/sites/a.com
/home/login/sites/b.com

А будет вот так:
/home/login/sites/b.com
/home/login/sites/b.com/a.com

Соответственно, в этом случае случае скрипт на b.com будет иметь доступ к файлам a.com

Ну и еще есть 3 вариант: убрать нах из скрипта filesize и не мучаться smail101.gif

Все способы реальные и с помощью них проблема, конечно, решиться, но это будет явно не самое грамотное решение... А хочется как-то профессионально и без гемора решить эту проблему...

Может кто-то уже сталкивался с аналогичной ситуацией?

0
 



С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362

Ссылка на сообщениеДобавлено: 24/02/06 в 03:49       Ответить с цитатойцитата 

1.Ты не должен этого хотеть.
2.Если ты не будешь писать ахинею , а изложишь задачу, то тебе помогут намного быстрей , это на будущее....
3.Если все же тебе очень хочется именно так "проффесионально" , то :
Код:

<?php
function http_filesize($sURL, $nTimeout = 30) {
   // Parsing URL
   $aURL = parse_url($sURL);
   // Checking HTTP request
   if($aURL['scheme'] != 'http')
       return false;
   // HTTP Host
   $sHost = $aURL['host'];
   // Remote file path
   $sFilepath = (isset($aURL['path']) ? $aURL['path'] : '/') . (isset($aURL['query']) ? '?' . $aURL['query'] : '');
   // Remote port
   $nPort = isset($aURL['port']) ? $aURL['port'] : 80;
   
   // Socket opening
   $fpRemote = fsockopen($sHost, $nPort, $errno, $errstr, $nTimeout);

   // Make sure the socket is open
   if(!$fpRemote)
       return false;
   else {
       // Request headers
       $sHeaders = "HEAD " . $sFilepath . " HTTP/1.1\r\n";
       $sHeaders .= "Host: ". $sHost . "\r\n";
       $sHeaders .= "Connection: Close\r\n\r\n";
       // Sending headers
       fwrite($fpRemote, $sHeaders);
       // Getting back the content
       $sRemoteHeaders = '';
       while(!feof($fpRemote))
           $sRemoteHeaders .= fgets($fpRemote, 128);
       // Closing the socket
       fclose($fpRemote);
       // Parsing the headers
       preg_match('/Content-Length:\s([0-9].+?)\s/', $sRemoteHeaders, $aMatches);
       if(isset($aMatches[1]))
           return (int)$aMatches[1];
       else
           return false;
   }
}
?>

соотв. юзаешь :
Код:

<?php
echo http_filesize(http://a.com/login/somefile);
?>

Естесно файлы должны быть доступны из вне.
В противном случае тоже можно решить проблему , ну за этим уже обратись к програмеру он тебе напишет.

3
 



С нами с 15.03.05
Сообщения: 99
Рейтинг: 21

Ссылка на сообщениеДобавлено: 24/02/06 в 04:23       Ответить с цитатойцитата 

1. Если это ответ на "А хочется как-то профессионально и без гемора решить эту проблему... " (других "хочу" в моем посте просто нет), то интересно почему я не должен этого хотеть? smail12.gif

2. Перечитал свой пост - ахинеи не нашел. Немного сумбурно, но в целом мысли изложены довольно понятно. Если бы это было иначе, то вряд ли бы я получил столь исчерпывающий ответ через каких-то 12 минут icon_smile.gif Некоторые банальные вопросы часами решаются, а здесь - 12 минут и проблема полностью решена.

3. Большое спасибо, все замечательно работает smail100.gif
Оценил по максимуму.

Кстати, вот здесь:
Код:
<?php
echo http_filesize(http://a.com/login/somefile);
?>

вроде кавычек не хватает

0
 



С нами с 07.06.00
Сообщения: 3516
Рейтинг: 1802

Ссылка на сообщениеДобавлено: 24/02/06 в 04:50       Ответить с цитатойцитата 

digel писал:
У хостера на одном аккаунте живут 2 моих сайта - a.com и b.com. На a.com в папке files лежит много-много файлов. ... Т.е. сейчас сделано так:
/home/login/sites/a.com
/home/login/sites/b.com

Вообще никаких проблем не вижу. Если пользоваться полным путем по диску, то для ПХП доступны все файлы твоего акка (если, конечно, чмод это позволяет). Они ведь на том же диске
т.е.
$i=filesize('/home/login/sites/a.com/www/files/one.file');
просто обязано работать, и незачем для этого ХТТП-запрос (внешний) использовать.

Elitist Club и Adult Yellow Pages

3
 



С нами с 15.03.05
Сообщения: 99
Рейтинг: 21

Ссылка на сообщениеДобавлено: 24/02/06 в 16:41       Ответить с цитатойцитата 

sAx, это было первым что я попробовал, потому что на другом хосте я именно так и делаю. Но на этом хосте не получилось и я решил, что здесь сайты отделены друг от друга. Но сейчас специально еще раз попробовал - заработало! icon_smile.gif Не знаю в чем дело, может в первый раз я просто путь неправильно написал... впрочем, это уже не важно...
Ответ заценил. Спасибо! smail54.gif

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »