22.05.2007, 14:07 | #1 |
Новичок
Регистрация: 22.05.2007
Сообщений: 2
Вес репутации: 0
|
Вынести функцию обновления ссылок в отдельный скрипт
День добрый!
На сегодняшний день есть несколько сайтов, к которым подключен sape Однако нагрузка временами бывает сильной, из-за посещаемости сайтов + скрипт сейпа при обновлении сылок иногда зависает на таймаут (работал и через сокеты, и через курл), процессы плоятся, сервак грузится.. Поэтому сейчас рассматривается вариант: 1. все страницы сайта переводятся в статику и отдаются прокси сервером nginx 2. для сепа сделать отдельный скрипт, который по крону или как демон будет висеть, и по очереди чекать линки для каждого сайта. Отдельно будет конфиг файл, где мжно будет для каждого сайта указать: - код сейпа - регулярку/шаблон, куда вставлять полученные ссылки сейпа - время в секундах, через которое обновлять ссылки - шаблон оформления ссылок. В связи с этим вопросы: 1. планируется ли у разработчиков сейпа сделать подобного рода скрипт? может я буду изобретать велосипед? 2. какие возможны минусы/грабли п сравнению со стандартным подходом? Не попаду ли я из-за этогов бан? |
22.05.2007, 18:48 | #3 |
Новичок
Регистрация: 22.05.2007
Сообщений: 2
Вес репутации: 0
|
Код, если кому пригодиться
Постарался сделать максимально независимый код. не трогаю самой библиотеки сейпа, чтобы при обновлении версии последней не переписывать все остальное :)
!!!Перед инициализацией класса 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 } /************************************************** **************/ |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Порекомендуйте скрипт каталог ссылок. | 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, время: 23:07.