- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
// Выведем все ошибки на чистую воду :)
error_reporting(E_ALL);
/**
* Рекурсивное изменение прав
* @param string $path - Путь (файл или каталог)
* @param int $filemode - Права, например 0755
* @return - bool FALSE если не удалось, TRUE если удалось
*/
function chmodTree($path, $filemode) {
if (!is_dir($path)) return chmod($path, $filemode);
$dir = opendir($path);
while ($file = readdir($dir))
if ($file != '.' && $file != '..') {
$fullpath = $path.'/'.$file;
if (is_link($fullpath)) return FALSE;
if (is_dir($fullpath))
if (!chmodTree($fullpath, $filemode)) return FALSE;
if (is_file($fullpath))
if (!chmod($fullpath, $filemode)) return FALSE;
}
closedir($dir);
return chmod($path, $filemode);
}
// Функция file_put_contents появляется только в PHP 5.0 ;(
if (!function_exists('file_put_contents')) {
function file_put_contents($filename, $data) {
if (!($f = @fopen($filename, 'w'))) {
return FALSE;
} else {
$bytes = fwrite($f, $data);
fclose($f);
return $bytes;
}
}
}
/**
* Получает файл с удалённого хоста, показывает и сохраняет в кеше
* @param string $RemoteFile - файл на удалённой машине
* @param string $LocalFile - локальный файл для сохранения
*/
function CashedFile($RemoteFile, $LocalFile) {
// Пытаемся получить файл с удалённого хоста
$text = @file_get_contents($RemoteFile); // Игнорируем ошибки
if ($text === FALSE) {
// Если не удалось получить файл, тогда читаем копию из кеша
$text = file_get_contents('cache/'.$LocalFile);
} else {
// Если каталога с кешем нет => создаём его
if (!file_exists("cache"))mkdir("cache");
// Ставим права на каталог
chmodTree("cache", 0777);
// Записываем полученный документ в файл
file_put_contents('cache/'.$LocalFile, $text);
}
// Отдаём браузеру то что удалось скачать :)
echo $text;
}
Кусок быстосляпанного кода для подгрузки частей сайта из Google Docs.
Практически нечитаемый код, но работает, подгружает файлы с удаленного хоста, складывает их в каталог, потом оттуда читает.
Непонятно, зачем нужна функция chmodTree, каталог cache же одноуровневый.