Помощь - Поиск - Пользователи
Полная версия этой страницы: HSDN Mirroring Cacher
Форум проекта HSDN > Проекты > Другие проекты
Admin
Данный класс позволяет создать зеркало любого удаленного ресурса на локальном сервере. Созданное зеркало по сути является прокси сервером, который будет непосредственно взаимодействовать с удаленным хостом. Благодаря системе встроенного кэширования страниц и картинок, нет нужды многократно загружать одну и ту же страницу с сервера.

Скачать: https://git.dev.hsdn.org/pub/mcacher/src/ma...acher.class.php
Stym
А этот скрипт что, картинки не может показывать??? Я вот сделал все как там написано... вот что получилось.... qipstatus.vfose.ru

и что там за ошибки?? получилось убрать эти ошибки только удалением функции в этой строчке (((
Admin
Цитата(Stym @ 21.6.2009, 18:40) *
А этот скрипт что, картинки не может показывать??? Я вот сделал все как там написано... вот что получилось.... qipstatus.vfose.ru

и что там за ошибки?? получилось убрать эти ошибки только удалением функции в этой строчке (((

Установите error_reporting(0); в начале скрипта.
Stym
Хороший вариант, сделал! biggrin.gif а че насчет картинок? я так понял они не поддерживаются чтоли? Извиняюсь за назойливость, но это последний вопрос rolleyes.gif
rostov114
Цитата(Stym @ 22.6.2009, 14:50) *
Хороший вариант, сделал! biggrin.gif а че насчет картинок? я так понял они не поддерживаются чтоли? Извиняюсь за назойливость, но это последний вопрос rolleyes.gif

Смотрите папку с кешем...в большинстве случаев проблема заключается в ней.
Stym
Цитата(Rostov114 @ 22.6.2009, 16:10) *
Смотрите папку с кешем...в большинстве случаев проблема заключается в ней.

Значит всетаки скрипт картинки поддерживает? Тогда как сделать чтобы они отображались? Ь(((((

а че смотреть в этом кеше? вроде файлы записываются, даже если удалить эту папку, она сама создается... права полные, ибо это все на WIN... размер 140кб...
xlin
что то не получается unsure.gif пишет
Цитата
Server error!

The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there was an error in a CGI script.

If you think this is a server error, please contact the webmaster.


Код
root@saikov archlinux.org.ru]# ls -la
итого 56
drwxr-xr-x  3 root root  4096 Окт  5 23:14 .
drwxrwxrwx 14 root root  4096 Окт  5 22:58 ..
-rw-r--r--  1 root root   141 Окт  5 23:07 .htaccess
drwxrwxr-x  2 root root  4096 Окт  5 23:00 cache
-rwxrwxr-x  1 root root  1770 Окт  5 23:13 cacher.php
-rwxrwxr-x  1 root root 35166 Окт  5 22:59 mcacher.class.php


Код
<?php
include 'mcacher.class.php'; // Подключение класса

$mcp = new Cacher; // Определение класса
$mcp->cache_dir = 'cache'; // Директория хранения файлов кэша
$mcp->cache_time = 24; // Период хранения кэша в часах (0 -- не кэшировать)

// Пути, для которых следует применить индивидуальный период хранения кэша
$mcp->custom_cache = array
(
    "^/news" => 0, // Не кэшировать страницу /news
    ".dhtml$" => 4  // Обновлять кэш для файлов .dhtml раз в 4 часа
);

// Ограничение доступа к различным ресурсам, страницам или файлам
$mcp->forbidden = array
(
    "^/badpage.php", // Закрыть доступ к странице /badpage.php
    ".mp3$" // Закрыть доступ ко всем файлам .mp3
);

$mcp->connect = 'http://www.hsdn.org'; // Адрес подключения

// Автозамена реального имени сайта на имя сайта зеркала в заголовках HTTP
$mcp->head_replace = array
(
    '[b]http://www.archlinux.org.ru[/b]' => $_SERVER['SERVER_NAME'] // Для заголовков, пр. Location
);

// Автозамена реального имени сайта на имя сайта зеркала в теле страницы,
// а также в ссылках на страницах
$mcp->body_replace = array
(
    '[b]http://www.archlinux.org.ru[/b]' => '' // Заменяем ссылки вида:
                                // href="http://www.hsdn.org/link" на href="/link"
);

$mcp->run_cache(); // Запуск класса


Что не верно? Надо зазеркалить archlinux.org.ru
Лог пишет вот что.
[Mon Oct 05 23:30:17 2009] [alert] [client 88.147.239.57] /srv/http/archlinux.org.ru/.htaccess: Options not allowed here
А IP в логе пишет ФОСовский а не инетовский
Admin
Цитата
Что не верно? Надо зазеркалить archlinux.org.ru
Лог пишет вот что.
[Mon Oct 05 23:30:17 2009] [alert] [client 88.147.239.57] /srv/http/archlinux.org.ru/.htaccess: Options not allowed here
А IP в логе пишет ФОСовский а не инетовский


Скорее всего это ошибка в конфигурации апача. Установите директиву AllowOverride All в файле httpd.conf. Эта директива отвечает за доступность настроек сервера через файлы .htaccess.
Также стоит проверить, поддерживается ли mod_rewrite вашим сервером.
xlin
Я пытаюсь это дела привязать к виртуал хосту.

Код
/etc/httpd/conf/extra/httpd-vhosts.conf


Код
<VirtualHost *:80>
    ServerAdmin admin@saikov.org.ru
    DocumentRoot "/srv/http/archlinux.org.ru"
    ServerName archlinux.vfose.ru
    ErrorLog "/var/log/httpd/test_log"
    CustomLog "/var/log/httpd/test_log_custom" common
</VirtualHost>


Код
/etc/httpd/conf/httpd.conf


Код
<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Deny from all
</Directory>

<Directory "/srv/http">
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Deny from all
</Directory>

<FilesMatch "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>

Цитата
Также стоит проверить, поддерживается ли mod_rewrite вашим сервером.

Как это проверить?
Вот так у меня... не пойму в чем дело?
xlin
Проблема решилась добавлением в httpd.conf
<Directory "/srv/http/archlinux.org.ru">
Options FollowSymLinks
AllowOverride All
</Directory>

Вроде работает теперь, но есть вопрос.. Если на сайте есть авторизация, то зеркало уже не будетпрксироваться?
только вот картинки не грузятся
Admin
Цитата(xlin @ 5.10.2009, 23:22) *
Вроде работает теперь, но есть вопрос.. Если на сайте есть авторизация, то зеркало уже не будетпрксироваться?
только вот картинки не грузятся


Авторизация будет работать, но только с отключенным кешированием страниц, т.к. в текущей версии класса кукисы тоже кешируются. Картинки можно кешировать отдельно, отдельным экземпляром класса.

И картинки у вас не грузятся возможно из-за того, что вы допустили ошибку в описании класса и/или скрипта его запуска. Скорее всего имеются некоторые символы перед <?php и после ?>, или же какие-то echo/print в скрипте запуска класса.
xlin
Цитата(Admin @ 6.10.2009, 2:22) *
Авторизация будет работать, но только с отключенным кешированием страниц, т.к. в текущей версии класса кукисы тоже кешируются. Картинки можно кешировать отдельно, отдельным экземпляром класса.

И картинки у вас не грузятся возможно из-за того, что вы допустили ошибку в описании класса и/или скрипта его запуска. Скорее всего имеются некоторые символы перед <?php и после ?>, или же какие-то echo/print в скрипте запуска класса.

Спасибо за помоь, оказывается после ?> присутствовал символ пробела.
xlin
Возник вопрос по скрипту. Прошу пояснить. В настройках зеркалится сайт archlinux.org.ru. В прмере который у вас приводится я его прописал. Поставил не кешировать
Код
$mcp->cache_time = 0;

так же на всякий случай сделал

Код
$mcp->custom_cache = array
(
    "^/forum" => 0, // Не кэшировать страницу
    "^/arch_forum" => 0,
    ".dhtml$" => 4  // Обновлять кэш для файлов .dhtml раз в 4 часа
);


И настроил автозамену и запуск

Код
$mcp->connect = 'http://archlinux.org.ru'; // Адрес подключения

// Автозамена реального имени сайта на имя сайта зеркала в заголовках HTTP
$mcp->head_replace = array
(
    'archlinux.org.ru' => $_SERVER['SERVER_NAME'] // Для заголовков, пр. Location
);

// Автозамена реального имени сайта на имя сайта зеркала в теле страницы,
// а также в ссылках на страницах
$mcp->body_replace = array
(
    'http://archlinux.org.ru' => '' // Заменяем ссылки вида:
                                // href="http://www.hsdn.org/link" на href="/link"
);

$mcp->run_cache(); // Запуск класса


После этих манипуляций я вижу либо пустую страницу, либо загруженную ее полностью без стилей (( Что надо сделать для исправления? Посмотрите archlinux.vfose.ru

Если перейти на сылку в форум, то он тоже как то криво открывается, картинки на половну загружены, как бы не все. Из-за этого он кривой smile.gif
Другие зеркала работают вроде нормально. wiki-archlinux.vfose.ru и lissyara.vfose.ru
Admin
Попробуйте для начала удалить папку с кешем.
xlin
удалял много раз.... толку нет. И лезет ошибка, которой не должно быть

Код
Can't open cache/6666cd76f96956469e7be39d750cc7d9 Cache File for write.

Или подскажите как тогда перенаправитьна archlinux.vfose.ru/furum
Не понятно....
Admin
Скорее всего нет прав на запись файла или создание директории. Также возможно имеются ошибки в пути.
rediska
Пожалуйста, выложите уже изменённый скрипт зеркалирования... (Пример)
Admin
Цитата(rediska @ 19.10.2009, 19:16) *
Пожалуйста, выложите уже изменённый скрипт зеркалирования... (Пример)

Примеры использования доступны в комментариях в начале скрипта.
ds-jan
mod_proxy_http.so
mod_proxy_ftp.soТеперь плиз объясните мне плюсы и минусы.А т оя думаю зачем с этим скриптом париться когда есть такое дополнение для апач
Admin
Цитата(ds-jan @ 31.3.2010, 15:08) *
mod_proxy_http.so
mod_proxy_ftp.soТеперь плиз объясните мне плюсы и минусы.А т оя думаю зачем с этим скриптом париться когда есть такое дополнение для апач

Не на всех хостингах можно такой модуль подключить. Также этот модуль не позволяет производить манипуляции по замене данных в зеркалируемом сайте (что очень важно, особенно если картинки на сайте ссылаются на другой хост, который тоже зеркалировать надо) или например тупо вырезать рекламу из сайта. Еще минус mod_proxy - он не кеширует контент, поэтому получается простой прокси (трафик не экономится).

Наш же скрипт работает на любом хостинге с mod_rewrite (кстати и без него может, если кое-что изменить), может заменять текст на сайте, вырезать рекламу, кешировать полностью или выборочно данные.

А на тему mod_proxy - лучше использовать вообще nginx или oops. Апач тут вообще не рулит.
ds-jan
НУ у меня на апаче стоит.С моей ВТшной линией достаточно быстро открывает
Dimanok
cacher.php
CODE
[root@n1 ucp-anticheat.vfose.ru]# cat cacher.php
<?php
include 'mcacher.class.php'; // Подключение класса

$mcp = new Cacher; // Определение класса
$mcp->cache_dir = 'cache'; // Директория хранения файлов кэша
$mcp->cache_time = 24; // Период хранения кэша в часах (0 -- не кэшировать)

// Пути, для которых следует применить индивидуальный период хранения кэша
$mcp->custom_cache = array
(
"^/news" => 0, // Не кэшировать страницу /news
".dhtml$" => 4 // Обновлять кэш для файлов .dhtml раз в 4 часа
);

// Ограничение доступа к различным ресурсам, страницам или файлам
$mcp->forbidden = array
(
"^/forum/index.php", // Закрыть доступ к странице /badpage.php
".mp3$" // Закрыть доступ ко всем файлам .mp3
);

$mcp->connect = 'http://ucp-anticheat.ru'; // Адрес подключения

// Автозамена реального имени сайта на имя сайта зеркала в заголовках HTTP
$mcp->head_replace = array
(
'ucp-anticheat.ru' => $_SERVER['SERVER_NAME'] // Для заголовков, пр. Location
);

// Автозамена реального имени сайта на имя сайта зеркала в теле страницы,
// а также в ссылках на страницах
$mcp->body_replace = array
(
'http://ucp-anticheat.ru' => '' // Заменяем ссылки вида:
// href="http://www.hsdn.org/link" на href="/link"
);

$mcp->run_cache(); // Запуск класса
?>
[root@n1 ucp-anticheat.vfose.ru]#

права/файлы
CODE
[root@n1 ucp-anticheat.vfose.ru]# ls -ls
итого 48
4 drwxrwxrwx 2 nginx nginx 4096 Авг 27 10:55 cache
4 -rwxrwxrwx 1 root root 1772 Авг 27 11:17 cacher.php
40 -rwxrwxrwx 1 root root 39480 Авг 26 16:17 mcacher.class.php
[root@n1 ucp-anticheat.vfose.ru]#

сервер

CODE
nginx version: nginx/0.8.42


CODE
PHP 5.2.13 (cgi-fcgi) (built: Feb 26 2010 17:40:52)
Copyright © 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright © 1998-2010 Zend Technologies
with Zend Extension Manager v1.2.2, Copyright © 2003-2007, by Zend Technologies
with Zend Optimizer v3.3.3, Copyright © 1998-2007, by Zend Technologies


Картинки не подгружаются, - _http://ucp-anticheat.vfose.ru
Как убрать рекламу, ( видел что здесь где-то об этом упомянули )
error.log

CODE
2010/08/27 12:12:37 [error] 8660#0: *3412 open() "/var/www/ucp-anticheat.vfose.ru/ucp.css" failed (2: No such file or directory), client: 88.147.144.165, server: ucp-anticheat.vfose.ru, request: "GET /ucp.css HTTP/1.1", host: "ucp-anticheat.vfose.ru", referrer: "http://ucp-anticheat.vfose.ru/"
2010/08/27 12:12:37 [error] 8660#0: *3413 open() "/var/www/ucp-anticheat.vfose.ru/images/logo3.png" failed (2: No such file or directory), client: 88.147.144.165, server: ucp-anticheat.vfose.ru, request: "GET /images/logo3.png HTTP/1.1", host: "ucp-anticheat.vfose.ru", referrer: "http://ucp-anticheat.vfose.ru/"
2010/08/27 12:12:37 [error] 8660#0: *3410 open() "/var/www/ucp-anticheat.vfose.ru/images/ru.png" failed (2: No such file or directory), client: 88.147.144.165, server: ucp-anticheat.vfose.ru, request: "GET /images/ru.png HTTP/1.1", host: "ucp-anticheat.vfose.ru", referrer: "http://ucp-anticheat.vfose.ru/"
2010/08/27 12:12:37 [error] 8660#0: *3414 open() "/var/www/ucp-anticheat.vfose.ru/images/en.png" failed (2: No such file or directory), client: 88.147.144.165, server: ucp-anticheat.vfose.ru, request: "GET /images/en.png HTTP/1.1", host: "ucp-anticheat.vfose.ru", referrer: "http://ucp-anticheat.vfose.ru/"
2010/08/27 12:12:37 [error] 8660#0: *3412 open() "/var/www/ucp-anticheat.vfose.ru/images/kv.png" failed (2: No such file or directory), client: 88.147.144.165, server: ucp-anticheat.vfose.ru, request: "GET /images/kv.png HTTP/1.1", host: "ucp-anticheat.vfose.ru", referrer: "http://ucp-anticheat.vfose.ru/"
2010/08/27 12:12:37 [error] 8660#0: *3413 open() "/var/www/ucp-anticheat.vfose.ru/images/windows7.png" failed (2: No such file or directory), client: 88.147.144.165, server: ucp-anticheat.vfose.ru, request: "GET /images/windows7.png HTTP/1.1", host: "ucp-anticheat.vfose.ru", referrer: "http://ucp-anticheat.vfose.ru/"
2010/08/27 12:12:37 [error] 8660#0: *3410 open() "/var/www/ucp-anticheat.vfose.ru/images/vmprotect.png" failed (2: No such file or directory), client: 88.147.144.165, server: ucp-anticheat.vfose.ru, request: "GET /images/vmprotect.png HTTP/1.1", host: "ucp-anticheat.vfose.ru", referrer: "http://ucp-anticheat.vfose.ru/"
2010/08/27 12:12:37 [error] 8660#0: *3414 open() "/var/www/ucp-anticheat.vfose.ru/images/vista.png" failed (2: No such file or directory), client: 88.147.144.165, server: ucp-anticheat.vfose.ru, request: "GET /images/vista.png HTTP/1.1", host: "ucp-anticheat.vfose.ru", referrer: "http://ucp-anticheat.vfose.ru/"
2010/08/27 12:12:37 [error] 8660#0: *3412 open() "/var/www/ucp-anticheat.vfose.ru/images/bgg.png" failed (2: No such file or directory), client: 88.147.144.165, server: ucp-anticheat.vfose.ru, request: "GET /images/bgg.png HTTP/1.1", host: "ucp-anticheat.vfose.ru", referrer: "http://ucp-anticheat.vfose.ru/"
2010/08/27 12:12:37 [error] 8660#0: *3413 open() "/var/www/ucp-anticheat.vfose.ru/images/bgg2.png" failed (2: No such file or directory), client: 88.147.144.165, server: ucp-anticheat.vfose.ru, request: "GET /images/bgg2.png HTTP/1.1", host: "ucp-anticheat.vfose.ru", referrer: "http://ucp-anticheat.vfose.ru/"
2010/08/27 12:12:37 [error] 8660#0: *3410 open() "/var/www/ucp-anticheat.vfose.ru/images/hlsw.png" failed (2: No such file or directory), client: 88.147.144.165, server: ucp-anticheat.vfose.ru, request: "GET /images/hlsw.png HTTP/1.1", host: "ucp-anticheat.vfose.ru", referrer: "http://ucp-anticheat.vfose.ru/"
2010/08/27 12:12:37 [error] 8660#0: *3414 open() "/var/www/ucp-anticheat.vfose.ru/images/lac.png" failed (2: No such file or directory), client: 88.147.144.165, server: ucp-anticheat.vfose.ru, request: "GET /images/lac.png HTTP/1.1", host: "ucp-anticheat.vfose.ru", referrer: "http://ucp-anticheat.vfose.ru/"
2010/08/27 12:12:37 [error] 8660#0: *3412 open() "/var/www/ucp-anticheat.vfose.ru/images/myac.png" failed (2: No such file or directory), client: 88.147.144.165, server: ucp-anticheat.vfose.ru, request: "GET /images/myac.png HTTP/1.1", host: "ucp-anticheat.vfose.ru", referrer: "http://ucp-anticheat.vfose.ru/"
2010/08/27 12:12:37 [error] 8660#0: *3413 open() "/var/www/ucp-anticheat.vfose.ru/images/sxe.png" failed (2: No such file or directory), client: 88.147.144.165, server: ucp-anticheat.vfose.ru, request: "GET /images/sxe.png HTTP/1.1", host: "ucp-anticheat.vfose.ru", referrer: "http://ucp-anticheat.vfose.ru/"
2010/08/27 12:12:37 [error] 8660#0: *3410 open() "/var/www/ucp-anticheat.vfose.ru/images/dntl.png" failed (2: No such file or directory), client: 88.147.144.165, server: ucp-anticheat.vfose.ru, request: "GET /images/dntl.png HTTP/1.1", host: "ucp-anticheat.vfose.ru", referrer: "http://ucp-anticheat.vfose.ru/"
2010/08/27 12:12:37 [error] 8660#0: *3414 open() "/var/www/ucp-anticheat.vfose.ru/images/easy.png" failed (2: No such file or directory), client: 88.147.144.165, server: ucp-anticheat.vfose.ru, request: "GET /images/easy.png HTTP/1.1", host: "ucp-anticheat.vfose.ru", referrer: "http://ucp-anticheat.vfose.ru/"
2010/08/27 12:12:37 [error] 8660#0: *3412 open() "/var/www/ucp-anticheat.vfose.ru/images/custodia.png" failed (2: No such file or directory), client: 88.147.144.165, server: ucp-anticheat.vfose.ru, request: "GET /images/custodia.png HTTP/1.1", host: "ucp-anticheat.vfose.ru", referrer: "http://ucp-anticheat.vfose.ru/"
2010/08/27 12:13:33 [error] 8660#0: *3413 "/var/www/ucp-anticheat.vfose.ru/forum/index.php" is not found (2: No such file or directory), client: 88.147.144.165, server: ucp-anticheat.vfose.ru, request: "GET /forum/ HTTP/1.1", host: "ucp-anticheat.vfose.ru", referrer: "http://ucp-anticheat.vfose.ru/"

Из лога видно что css и сами картинки соответственно не подгружаются, их как-бы нет. Что не так ?
rostov114
Здравствуйте.

Работа с Nginx не проверялась, класс корректно работает только с Apache, об этом даже упомянуто в комментарии класса
Код
/*
* СИСТЕМНЫЕ ТРЕБОВАНИЯ
*
* - PHP 5.2.0 или выше с поддержкой Сокетов
* - Apache 1.3.0 или выше с поддержкой mod_rewrite
*/
Dimanok
Вопрос решён. Можешь писать что на nginx'e все нормально.
Stym
а можно чтонибудь подправить, чтобы через этот скрипт можно было вконтакте залогиниться?
хочу зазеркалить этот контакт...
Gnome
Цитата(Stym @ 1.3.2011, 2:15) *
а можно чтонибудь подправить, чтобы через этот скрипт можно было вконтакте залогиниться?
хочу зазеркалить этот контакт...


Здравствуйте!
Помогите пожалуйста разобраться в работе скрипта, хочу зеркалить свой сайт в локальной сети города.

установил denwer: Denwer3_Base_PHP52_2012-06-27_a2.2.22_p5.2.12_zendoptimizer_m5.5.25_pma3.5.1_xdebug
создал директорию со своим ip адресом
в ней создал файлы .htaccess и cacher.php а так же скачал и положил туда же файл mcacher.class.phps
При открытии сайта возникает ошибка:

CODE
Warning: include(mcacher.class.php) [function.include]: failed to open stream: No such file or directory in Z:\home\my_ip\www\cacher.php on line 2

Warning: include() [function.include]: Failed opening 'mcacher.class.php' for inclusion (include_path='.;/usr/local/php5/PEAR') in Z:\home\my_ip\www\cacher.php on line 2

Fatal error: Class 'Cacher' not found in Z:\home\my_ip\www\cacher.php on line 4


может быть мне нужно установить более старую версию денвера? или я что-то не так делаю?
кстати в конце файла mcacher.class.phps нет ?> так и должно быть?
Заранее благодарю!
Gnome
Извиняюсь, скрипт работает! просто плохо ознакомился с инструкцией по установке!
Сейчас возникла проблема с авторизацией на зеркалируемом сайте, при вводе имени пользователя и пароля страница перегружается и вновь просит авторизироваться. Пробовал отключать кэш - не помогает. В настройках движка (NGCMS) зеркалируемого сайта менял метод авторизации с cookie на сессии и обратно - но результат тот же! Очень бы хотелось разобраться в чём причина. Помогите пожалуйста!
Admin
Цитата(Gnome @ 18.12.2012, 18:36) *
Извиняюсь, скрипт работает! просто плохо ознакомился с инструкцией по установке!
Сейчас возникла проблема с авторизацией на зеркалируемом сайте, при вводе имени пользователя и пароля страница перегружается и вновь просит авторизироваться. Пробовал отключать кэш - не помогает. В настройках движка (NGCMS) зеркалируемого сайта менял метод авторизации с cookie на сессии и обратно - но результат тот же! Очень бы хотелось разобраться в чём причина. Помогите пожалуйста!


Если не работает при отключенном кешировании - скорее всего метод авторизации по каким-то причинам не поддерживается скриптом. Нужно изучать случай в частном порядке.

Нужно больше информации.
Gnome
Цитата(Admin @ 20.12.2012, 22:39) *
Если не работает при отключенном кешировании - скорее всего метод авторизации по каким-то причинам не поддерживается скриптом. Нужно изучать случай в частном порядке.

Нужно больше информации.



К сожалению я в PHP не силён, могу только сказать что авторизация реализована при помощи плагина auth_basic для NGCMS: ngcms.ru/uploads/files/components/auth_basic_0_20.zip
Gnome
Может быть кто-нибудь возьмётся за адаптацию HSDN Mirroring Cacher к NGCMS за $ ?
menvil
У меня есть подозрения что почему-то этот класс не обрабатывает директиву Location или я настроил что-то не так.
Проблема следующая. Есть сайт bookerok. com
Все показывается, но если выполнить какой-нибудь который выполняется методом POST то сайт перестает зеркалироваться. Баг ?
Вот код который использую
CODE

require_once "cacher.class.php";

$mcp = new Cacher;
$mcp->cache_dir = 'cache';
$mcp->cache_time = 24;


$mcp->connect = 'http://bookerok.com/';

$mcp->head_replace = array
(
'bookerok.com' => $_SERVER['SERVER_NAME']
);

$mcp->body_replace = array
(
'http://bookerok.com' => '',
);

$mcp->run_cache();


Буду признателен за помощь.
Admin
Цитата(menvil @ 31.7.2013, 16:40) *
У меня есть подозрения что почему-то этот класс не обрабатывает директиву Location или я настроил что-то не так.
Проблема следующая. Есть сайт bookerok. com
Все показывается, но если выполнить какой-нибудь который выполняется методом POST то сайт перестает зеркалироваться. Баг ?
Вот код который использую
CODE

require_once "cacher.class.php";

$mcp = new Cacher;
$mcp->cache_dir = 'cache';
$mcp->cache_time = 24;


$mcp->connect = 'http://bookerok.com/';

$mcp->head_replace = array
(
'bookerok.com' => $_SERVER['SERVER_NAME']
);

$mcp->body_replace = array
(
'http://bookerok.com' => '',
);

$mcp->run_cache();


Буду признателен за помощь.


Для обработки POST-запросов необходимо отключить кеширование, т.е. установить $mcp->cache_time = 0;.

Что касается Location: имеются в виду редиректы заголовку?
Редирект по заголовку должен вополнять браузер, а не скрипт. Скрипт лишь отдаст браузеру страницу, на которую браузер попал по заголовку Location. Естественно, если в заголовках Location значится полный адрес сайта, его необходимо заменить через $mcp->head_replace, иначе браузер будет переадресован на оригинальную версию сайта, а не на зеркало.
menvil
Цитата(Admin @ 31.7.2013, 18:52) *
Для обработки POST-запросов необходимо отключить кеширование, т.е. установить $mcp->cache_time = 0;.

Что касается Location: имеются в виду редиректы заголовку?
Редирект по заголовку должен вополнять браузер, а не скрипт. Скрипт лишь отдаст браузеру страницу, на которую браузер попал по заголовку Location. Естественно, если в заголовках Location значится полный адрес сайта, его необходимо заменить через $mcp->head_replace, иначе браузер будет переадресован на оригинальную версию сайта, а не на зеркало.

После поста приходит такой вот ответ.
CODE
Cache-Control:no-cache, must-revalidate, post-check=0, pre-check=0
Connection:keep-alive
Content-Encoding:gzip
Content-Language:ru
Content-Length:1519
Content-Type:text/html; charset=utf-8
Date:Wed, 31 Jul 2013 13:57:01 GMT
ETag:"1375279020"
Expires:Sun, 19 Nov 1978 05:00:00 GMT
Keep-Alive:timeout=20
Last-Modified:Wed, 31 Jul 2013 13:57:00 +0000
Location:http://bookerok.com/ru/search-booked
Server:nginx
Vary:Accept-Encoding

Контента никакого нет. Кто должен сходить по ссылке которая обозначена в Location ?
Можно посмотреть тут как работает
[http://]book-hot[точка]com

Как видно браузер никуда не переходит
Admin
Ну в этом случае браузер должен перейти на http://bookerok.com/ru/search-booked (автоматически) и передать туда переменную сессии (или куки), и сайт выдаст результат POST-запроса. Но т.к. запрос Вы подаете на зеркале, а редирект происходит на реальный сайт, то ни кукисы, ни сессии работать не будут.

В вашем случае нужно сделать то, о чем я выше писал: отключить кеширование (чтобы не кешировались кукисы, запросы и сессии) и включить автозамену заголовков, чтобы заменить "bookerok.com" в Location на вдрес Вашего сайта через head_replace.

Отмечу, что head_replace требует поддержку регулярных выражений на php, поэтому если они не поддерживаются, работать замена не будет.
Admin
UPD: и не забудьте после отключения кеширования очистить папку с кешем.
menvil
Мой код сейчас выглядит так.
Можете сказать в чем проблема ?

CODE
require_once "cacher.class.php";

$mcp = new Cacher;
$mcp->cache_dir = 'cache';
$mcp->cache_time = 0;


$mcp->connect = 'http://bookerok.com/';

$mcp->head_replace = array
(
'http://bookerok.com/ru/search-booked' => $_SERVER['SERVER_NAME'].'/ru/search-booked'
);

$mcp->body_replace = array
(
'http://bookerok.com' => '',
);

$mcp->run_cache();

Admin
У Вас ошибка. Необходимо указать так:

Код
$mcp->head_replace = array
(
'http://bookerok.com' => '',
'http://bookerok.com/ru/search-booked' => 'http://'.$_SERVER['SERVER_NAME'].'/ru/search-booked'
);


Да и по идее первой строчки должно хватить.
Admin
Посмотрел Ваш сайт. Проблема судя по всему не в заголовках, а в ява-скрипте. Скорее всего по каким-то причинам он не хочет работать не не оригинальном сайте. Возможно внутри скриптов необходимо что-то тоже заменять. Но это уже скорее вопрос к программистам, а не в скрипту, т.к. скрипт лишь дает браузеру ровно то, что принял с оригинального сайта.
Admin
Например, если на главной странице сайте не заполнять поля, и сразу нажать "найти", на оригинале не происходит отправки запроса, а просто выходит сообщение на яве. На зеркале же почему-то отправляется пост-запрос, и видимо тоже как-то криво, т.к. судя по всему запрос стоится ajax-ом, а не простым постом.
menvil
Цитата(Admin @ 31.7.2013, 19:27) *
Посмотрел Ваш сайт. Проблема судя по всему не в заголовках, а в ява-скрипте. Скорее всего по каким-то причинам он не хочет работать не не оригинальном сайте. Возможно внутри скриптов необходимо что-то тоже заменять. Но это уже скорее вопрос к программистам, а не в скрипту, т.к. скрипт лишь дает браузеру ровно то, что принял с оригинального сайта.

Я посмотрел заголовки которые я получаю на book-hot и у меня нет директивы location значит что-то по дороге теряется по всей видимости
Admin
Да вероятнее всего это кукисы. Почему-то на зеркале они не устанавливаются. Возможно они устанавливаются ява-скриптом или еще как-то. В общем изучать надо. Drupal со всеми плагинами - очень сложный движок, и зазеркалить без особых проблем не выйдет.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2019 IPS, Inc.