Старый 22.05.2007, 14:07   #1
Новичок
 
Регистрация: 22.05.2007
Сообщений: 2
Вес репутации: 0
clevel на пути к лучшему
По умолчанию Вынести функцию обновления ссылок в отдельный скрипт

День добрый!
На сегодняшний день есть несколько сайтов, к которым подключен sape

Однако нагрузка временами бывает сильной, из-за посещаемости сайтов + скрипт сейпа при обновлении сылок иногда зависает на таймаут (работал и через сокеты, и через курл), процессы плоятся, сервак грузится..

Поэтому сейчас рассматривается вариант:
1. все страницы сайта переводятся в статику и отдаются прокси сервером nginx
2. для сепа сделать отдельный скрипт, который по крону или как демон будет висеть, и по очереди чекать линки для каждого сайта. Отдельно будет конфиг файл, где мжно будет для каждого сайта указать:
- код сейпа
- регулярку/шаблон, куда вставлять полученные ссылки сейпа
- время в секундах, через которое обновлять ссылки
- шаблон оформления ссылок.

В связи с этим вопросы:
1. планируется ли у разработчиков сейпа сделать подобного рода скрипт? может я буду изобретать велосипед?
2. какие возможны минусы/грабли п сравнению со стандартным подходом?
Не попаду ли я из-за этогов бан?
clevel вне форума   Ответить с цитированием
Старый 22.05.2007, 18:16   #2
Администратор
 
Аватар для Hedgehog
 
Регистрация: 10.11.2006
Сообщений: 166
Вес репутации: 251
Hedgehog - прекрасное будущееHedgehog - прекрасное будущееHedgehog - прекрасное будущееHedgehog - прекрасное будущееHedgehog - прекрасное будущееHedgehog - прекрасное будущееHedgehog - прекрасное будущееHedgehog - прекрасное будущееHedgehog - прекрасное будущееHedgehog - прекрасное будущееHedgehog - прекрасное будущее
По умолчанию

1. Разработки подобного скрипта нет в планах.

2. Граблей быть не должно, если всё правильно сделать.
Hedgehog вне форума   Ответить с цитированием
Старый 22.05.2007, 18:48   #3
Новичок
 
Регистрация: 22.05.2007
Сообщений: 2
Вес репутации: 0
clevel на пути к лучшему
По умолчанию Код, если кому пригодиться

Постарался сделать максимально независимый код. не трогаю самой библиотеки сейпа, чтобы при обновлении версии последней не переписывать все остальное :)

!!!Перед инициализацией класса Indexer() не забудьте подключить файл с библиотекой сейпа

вызов по крону раз в 10 минут...

/************************** cron.php ****************************/
$path = dirname($_SERVER["SCRIPT_FILENAME"]);
define('_SAPE_USER', '*************************');
include_once($path.'/sape.php');
include_once($path.'/lib.php');

$_ind = & new Indexer();
$_ind->AddDir('/usr/hosting/domain/html','domain',0);
/************************************************** **************/

Сам класс:

/*************************** lib.php ****************************/
Class Indexer{
var $pages,$host,$regexp,$replace;

function Indexer(){
$this->regexp = "/\<\!--sape\!--\>(.*?)\<\!--sape\!--\>/is";
$this->replace = "{code}";
} //function Indexer

/*
На входе:
absolute - /usr/hosting/domain/html
relative - путь от корня, ставим ''
index - индексировать ли index.htm[l]
*/

function AddDir($absolute,$relative,$index){
if(!file_exists($absolute)) return;

$d = dir($absolute);
while (false !== ($entry = $d->read())) {
if($entry=='.' || $entry=='..') continue;

if(is_file($absolute.'/'.$entry)){
if(strpos($entry,'.htm')===false) continue;
else{
$uri = $relative.'/'.$entry;
if(isset($this->pages[$uri])) continue;

if($index==0 && strpos($entry,'index.')!==false && strlen($relative)<2) $data = '';
else{
$_sape = & new SAPE_client(array('host' => $this->host,
'request_uri' => $uri,
'fetch_remote_type' => 'curl'));
$_sape->load_links();
$data = $_sape->return_links();
} //else

$cnt = file_get_contents($absolute.'/'.$entry);
$cnt = preg_replace($this->regexp,str_replace('{code}',$data,$this->replace),$this->replace), $cnt);

$fp = fopen($absolute.'/'.$entry,'w');
fwrite($fp,$cnt);
fclose($fp);

$this->pages[$uri] = true;
} //if valid_html_page
} //if file
else $this->AddDir($absolute.'/'.$entry,$relative.'/'.$entry,$index);
} //while

$d->close();
} //function AddDir
}
/************************************************** **************/
clevel вне форума   Ответить с цитированием
Ответ

Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Порекомендуйте скрипт каталог ссылок. Deadman_n Курилка 8 06.06.2008 19:07
Проблема с индексацией страниц после обновления кода sape для контекстных ссылок serp Ошибки при работе с системой 0 06.03.2008 14:29
Скрипт показывает что нет приндексённых ссылок den78ru Ошибки при работе с системой 16 02.09.2007 20:20
Предлагаю ввести по желанию новую функцию den78ru Пожелания пользователей системы 10 02.07.2007 12:05
А можно ввести функцию реиндексации отдельной страницы пользователем? extrasoft Пожелания пользователей системы 4 26.06.2007 21:02


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