Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум проекта HSDN _ Другие проекты _ HSDN Mirroring Cacher

Автор: Admin 16.6.2009, 20:19

Данный класс позволяет создать зеркало любого удаленного ресурса на локальном сервере. Созданное зеркало по сути является прокси сервером, который будет непосредственно взаимодействовать с удаленным хостом. Благодаря системе встроенного кэширования страниц и картинок, нет нужды многократно загружать одну и ту же страницу с сервера.

Скачать: https://git.dev.hsdn.org/pub/mcacher/src/master/mcacher.class.php

Автор: Stym 21.6.2009, 18:40

А этот скрипт что, картинки не может показывать??? Я вот сделал все как там написано... вот что получилось.... qipstatus.vfose.ru

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

Автор: Admin 21.6.2009, 22:37

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

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

Установите error_reporting(0); в начале скрипта.

Автор: Stym 22.6.2009, 13:50

Хороший вариант, сделал! biggrin.gif а че насчет картинок? я так понял они не поддерживаются чтоли? Извиняюсь за назойливость, но это последний вопрос rolleyes.gif

Автор: Rostov114 22.6.2009, 15:10

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

Смотрите папку с кешем...в большинстве случаев проблема заключается в ней.

Автор: Stym 22.6.2009, 20:28

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

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

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

Автор: xlin 5.10.2009, 22:25

что то не получается 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 5.10.2009, 22:44

Цитата
Что не верно? Надо зазеркалить 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. Эта http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride отвечает за доступность настроек сервера через файлы .htaccess.
Также стоит проверить, поддерживается ли mod_rewrite вашим сервером.

Автор: xlin 5.10.2009, 23:03

Я пытаюсь это дела привязать к виртуал хосту.

Код
/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 5.10.2009, 23:22

Проблема решилась добавлением в httpd.conf
<Directory "/srv/http/archlinux.org.ru">
Options FollowSymLinks
AllowOverride All
</Directory>

Вроде работает теперь, но есть вопрос.. Если на сайте есть авторизация, то зеркало уже не будетпрксироваться?
только вот картинки не грузятся

Автор: Admin 6.10.2009, 1:22

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


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

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

Автор: xlin 6.10.2009, 15:52

Цитата(Admin @ 6.10.2009, 2:22) *
Авторизация будет работать, но только с отключенным кешированием страниц, т.к. в текущей версии класса кукисы тоже кешируются. Картинки можно кешировать отдельно, отдельным экземпляром класса.

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

Спасибо за помоь, оказывается после ?> присутствовал символ пробела.

Автор: xlin 9.10.2009, 12:26

Возник вопрос по скрипту. Прошу пояснить. В настройках зеркалится сайт 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 9.10.2009, 14:19

Попробуйте для начала удалить папку с кешем.

Автор: xlin 9.10.2009, 15:06

удалял много раз.... толку нет. И лезет ошибка, которой не должно быть

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

Или подскажите как тогда перенаправитьна archlinux.vfose.ru/furum
Не понятно....

Автор: Admin 9.10.2009, 17:45

Скорее всего нет прав на запись файла или создание директории. Также возможно имеются ошибки в пути.

Автор: rediska 19.10.2009, 19:16

Пожалуйста, выложите уже изменённый скрипт зеркалирования... (Пример)

Автор: Admin 20.10.2009, 14:56

Цитата(rediska @ 19.10.2009, 19:16) *
Пожалуйста, выложите уже изменённый скрипт зеркалирования... (Пример)

Примеры использования доступны в комментариях в начале скрипта.

Автор: ds-jan 31.3.2010, 15:08

mod_proxy_http.so
mod_proxy_ftp.soТеперь плиз объясните мне плюсы и минусы.А т оя думаю зачем с этим скриптом париться когда есть такое дополнение для апач

Автор: Admin 31.3.2010, 15:26

Цитата(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 31.3.2010, 20:35

НУ у меня на апаче стоит.С моей ВТшной линией достаточно быстро открывает

Автор: Dimanok 27.8.2010, 10:30

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 27.8.2010, 21:00

Здравствуйте.

Работа с Nginx не проверялась, класс корректно работает только с Apache, об этом даже упомянуто в комментарии класса

Код
/*
* СИСТЕМНЫЕ ТРЕБОВАНИЯ
*
* - PHP 5.2.0 или выше с поддержкой Сокетов
* - Apache 1.3.0 или выше с поддержкой mod_rewrite
*/

Автор: Dimanok 30.8.2010, 11:07

Вопрос решён. Можешь писать что на nginx'e все нормально.

Автор: Stym 1.3.2011, 1:15

а можно чтонибудь подправить, чтобы через этот скрипт можно было вконтакте залогиниться?
хочу зазеркалить этот контакт...

Автор: Gnome 10.12.2012, 14:02

Цитата(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 18.12.2012, 17:36

Извиняюсь, скрипт работает! просто плохо ознакомился с инструкцией по установке!
Сейчас возникла проблема с авторизацией на зеркалируемом сайте, при вводе имени пользователя и пароля страница перегружается и вновь просит авторизироваться. Пробовал отключать кэш - не помогает. В настройках движка (NGCMS) зеркалируемого сайта менял метод авторизации с cookie на сессии и обратно - но результат тот же! Очень бы хотелось разобраться в чём причина. Помогите пожалуйста!

Автор: Admin 20.12.2012, 21:39

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


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

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

Автор: Gnome 21.12.2012, 10:59

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

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



К сожалению я в PHP не силён, могу только сказать что авторизация реализована при помощи плагина auth_basic для NGCMS: ngcms.ru/uploads/files/components/auth_basic_0_20.zip

Автор: Gnome 23.12.2012, 9:32

Может быть кто-нибудь возьмётся за адаптацию HSDN Mirroring Cacher к NGCMS за $ ?

Автор: menvil 31.7.2013, 15: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();


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

Автор: Admin 31.7.2013, 16:52

Цитата(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 31.7.2013, 16:58

Цитата(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 31.7.2013, 17:08

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

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

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

Автор: Admin 31.7.2013, 17:13

UPD: и не забудьте после отключения кеширования очистить папку с кешем.

Автор: menvil 31.7.2013, 17:15

Мой код сейчас выглядит так.
Можете сказать в чем проблема ?

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 31.7.2013, 17:22

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

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


Да и по идее первой строчки должно хватить.

Автор: Admin 31.7.2013, 17:27

Посмотрел Ваш сайт. Проблема судя по всему не в заголовках, а в ява-скрипте. Скорее всего по каким-то причинам он не хочет работать не не оригинальном сайте. Возможно внутри скриптов необходимо что-то тоже заменять. Но это уже скорее вопрос к программистам, а не в скрипту, т.к. скрипт лишь дает браузеру ровно то, что принял с оригинального сайта.

Автор: Admin 31.7.2013, 17:30

Например, если на главной странице сайте не заполнять поля, и сразу нажать "найти", на оригинале не происходит отправки запроса, а просто выходит сообщение на яве. На зеркале же почему-то отправляется пост-запрос, и видимо тоже как-то криво, т.к. судя по всему запрос стоится ajax-ом, а не простым постом.

Автор: menvil 31.7.2013, 17:32

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

Я посмотрел заголовки которые я получаю на book-hot и у меня нет директивы location значит что-то по дороге теряется по всей видимости

Автор: Admin 31.7.2013, 17:35

Да вероятнее всего это кукисы. Почему-то на зеркале они не устанавливаются. Возможно они устанавливаются ява-скриптом или еще как-то. В общем изучать надо. Drupal со всеми плагинами - очень сложный движок, и зазеркалить без особых проблем не выйдет.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)