Вернуться   Форум SAPE.RU > Система SAPE.ru > Контекстные ссылки и все, что с ними связано

-->
Ответ
 
Опции темы
Старый 11.02.2008, 10:34   #1
Специалист
 
Регистрация: 03.05.2007
Сообщений: 189
Вес репутации: 0
antsv может только надеяться на улучшение
По умолчанию Код на Perl - когда ждать?

Собственно, хотелось бы получить для тестирования перловский код. Можно?
antsv вне форума   Ответить с цитированием
Старый 01.03.2008, 17:36   #2
Новичок
 
Аватар для vassilio
 
Регистрация: 01.03.2008
Сообщений: 3
Вес репутации: 0
vassilio на пути к лучшему
По умолчанию

И всё же, когда будет Perl-код?
vassilio вне форума   Ответить с цитированием
Старый 02.03.2008, 12:39   #3
Новичок
 
Регистрация: 15.12.2007
Сообщений: 2
Вес репутации: 0
DEHucka на пути к лучшему
По умолчанию

И я голосую за код на Perl!
DEHucka вне форума   Ответить с цитированием
Старый 02.03.2008, 13:56   #4
Специалист
 
Регистрация: 19.07.2007
Адрес: Estonia
Сообщений: 223
Вес репутации: 210
Antuan скоро станет известенAntuan скоро станет известен
Отправить сообщение для Antuan с помощью ICQ
По умолчанию

Одинаково думаем. Пару дней назад заметил: что это моя «крутая» Перл-площадка простаивает Без контекстных ссылок. Побежал в Инструкции, а для ПЕРЛа ещё и кода нет...
Antuan вне форума   Ответить с цитированием
Старый 02.03.2008, 20:52   #5
Новичок
 
Аватар для vassilio
 
Регистрация: 01.03.2008
Сообщений: 3
Вес репутации: 0
vassilio на пути к лучшему
По умолчанию Похоже, недождаться...

А php-код (почти через день меняющийся) переводить на Perl - лень.
Такой выход: вызывать из Perl c помощью LWP сценарий PHP для обработки в нём контекста. Выглядит это так:

В нашем Perl-движке:

my $text = 'Это исходный контекст';
$text = get_sape_content(\$text);
print "Content-type: text/html\n\n";
print "<html>$text</html>\n";

sub get_sape_content {
my $content_ref = shift;
my $sape_user = '1234xxxxxxxxxxxxxxxxx56789';
require LWP::UserAgent;
my $ua = LWP::UserAgent->new;
$ua->timeout(60);
use CGI;
my $q = new CGI;
my $response = $ua->post( $q->url(-base =>1). "/$sape_user/sape_content.php",
[
CONTENT => $$content_ref,
SAPE_USER => $sape_user,
REQUEST_URI => $ENV{'REQUEST_URI'},
HTTP_HOST => $ENV{'HTTP_HOST'},
],
);

return $response->content if ($response->is_success);
return $$content_ref ;
}


Промижуточный сценарий sape_content.php (располагаем его там же, где и sape.php):

<?php
$sape_parameters['request_uri'] = (isset($_POST['REQUEST_URI']) && strlen($_POST['REQUEST_URI']) ) ? $_POST['REQUEST_URI'] : '/';
$sape_parameters['host'] = (isset($_POST['HTTP_HOST'])) ? $_POST['HTTP_HOST'] : $_SERVER['HTTP_HOST'];
$sape_parameters['charset'] = (isset($_POST['CHARSET']) && strlen($_POST['CHARSET']) ) ? $_POST['CHARSET'] : 'windows-1251';
if (!defined('_SAPE_USER')){
define('_SAPE_USER', isset($_POST['SAPE_USER']) ? $_POST['SAPE_USER'] : '');
}
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
$sape_context = new SAPE_context($sape_parameters);
echo $sape_context->replace_in_text_segment(isset($_POST['CONTENT']) ? $_POST['CONTENT'] : '');
?>

Конечно, работу это замедляет, но подождём, когда на Perl что-то изобразят .
vassilio вне форума   Ответить с цитированием
Старый 03.03.2008, 15:02   #6
Новичок
 
Аватар для vassilio
 
Регистрация: 01.03.2008
Сообщений: 3
Вес репутации: 0
vassilio на пути к лучшему
По умолчанию Меленькое исправление

Перловую функцию get_sape_content надо немного изменить в связи с необходимостью форвардинга cookies sape-индексатора:
Код:
sub get_sape_content {
    my $content_ref = shift;
    my $sape_user   = '1234xxxxxxxxxxxxxxxxx56789';

    use CGI;
    my $q = new CGI;
    if ( $q->cookie('sape_cookie') or $q->cookie('sape_debug') ) {
        require HTTP::Cookies;
        my $cookie_jar = HTTP::Cookies->new();
        $cookie_jar->set_cookie( '', 'sape_cookie', $q->cookie('sape_cookie'), '/', $ENV{'HTTP_HOST'} )
          if $q->cookie('sape_cookie');
        $cookie_jar->set_cookie( '', 'sape_debug', $q->cookie('sape_debug'), '/', $ENV{'HTTP_HOST'} )
          if $q->cookie('sape_debug');
        $ua->cookie_jar($cookie_jar);
    }
    require LWP::UserAgent;
    my $ua = LWP::UserAgent->new;
    $ua->timeout(60);
    my $response = $ua->post(
        $q->url( -base => 1 ) . "/$sape_user/sape_content.php",
        [
            CONTENT     => $$content_ref,
            SAPE_USER   => $sape_user,
            REQUEST_URI => $ENV{'REQUEST_URI'},
            HTTP_HOST   => $ENV{'HTTP_HOST'},
        ],
    );

    return $response->content if ( $response->is_success );
    return $$content_ref;
}
vassilio вне форума   Ответить с цитированием
Старый 07.05.2008, 17:29   #7
Специалист
 
Регистрация: 03.05.2007
Сообщений: 189
Вес репутации: 0
antsv может только надеяться на улучшение
По умолчанию

Спасибо, конечно, но это полное извращение. Подзапрос через LWP реально увиличивает время работы скрипта.

Да уже и Perl версия вышла.
antsv вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сколько ждать модерации? langolier Вопросы по работе системы 10 26.06.2008 19:11
Модерация! или сколько её ждать) Ufamag Курилка 17 27.04.2008 13:28
А сколько ждать переиндексации? Arom Вопросы от новичков 13 21.02.2008 17:54
Сколько ещё ждать??? kostyk Вопросы по работе системы 2 14.10.2007 17:44
Устал я ждать... Гарри Гудини Вопросы по работе системы 2 14.09.2007 13:22


Часовой пояс GMT +3, время: 10:59.