С нами с 15.03.05
Сообщения: 99
Рейтинг: 21
|
Добавлено: 24/02/06 в 03:37 |
Извините за название темы - в полчетвертого ночью после 23 февраля ничего более вразумительно в голову не приходит
--------
Сижу вот сейчас и вместо того, что лечь спать, ломаю голову, как решить одну проблемку
У хостера на одном аккаунте живут 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 и не мучаться
Все способы реальные и с помощью них проблема, конечно, решиться, но это будет явно не самое грамотное решение... А хочется как-то профессионально и без гемора решить эту проблему...
Может кто-то уже сталкивался с аналогичной ситуацией?
|
|
|
|
С нами с 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);
?>
|
Естесно файлы должны быть доступны из вне.
В противном случае тоже можно решить проблему , ну за этим уже обратись к програмеру он тебе напишет.
|
|
|
|
С нами с 15.03.05
Сообщения: 99
Рейтинг: 21
|
Добавлено: 24/02/06 в 04:23 |
1. Если это ответ на "А хочется как-то профессионально и без гемора решить эту проблему... " (других "хочу" в моем посте просто нет), то интересно почему я не должен этого хотеть?
2. Перечитал свой пост - ахинеи не нашел. Немного сумбурно, но в целом мысли изложены довольно понятно. Если бы это было иначе, то вряд ли бы я получил столь исчерпывающий ответ через каких-то 12 минут ![icon_smile.gif](/template/images/smiles/icon_smile.gif) Некоторые банальные вопросы часами решаются, а здесь - 12 минут и проблема полностью решена.
3. Большое спасибо, все замечательно работает
Оценил по максимуму.
Кстати, вот здесь:
Код: | <?php
echo http_filesize(http://a.com/login/somefile);
?> |
вроде кавычек не хватает
|
|
|
|
С нами с 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');
просто обязано работать, и незачем для этого ХТТП-запрос (внешний) использовать.
|
|
|
|
С нами с 15.03.05
Сообщения: 99
Рейтинг: 21
|
Добавлено: 24/02/06 в 16:41 |
sAx, это было первым что я попробовал, потому что на другом хосте я именно так и делаю. Но на этом хосте не получилось и я решил, что здесь сайты отделены друг от друга. Но сейчас специально еще раз попробовал - заработало! ![icon_smile.gif](/template/images/smiles/icon_smile.gif) Не знаю в чем дело, может в первый раз я просто путь неправильно написал... впрочем, это уже не важно...
Ответ заценил. Спасибо!
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |