Хостинг у меня от Hosting.nic.ru, тариф 301.
512 мега оперативки, псевдо VPS, 3 гига на винче.
При этом сайт падает уже при 300 униках в день.
Друпал — очень хорошая CMS. Без шуток. Можно собрать сайт любой направленности с любыми наворотами. Но его потребность в ресурсах — извините меня, выше крыши. Причем даже нанимались спецы для его оптимизации. Запросы кешируются. А сайт жрет памяти так, будто на него ходят 30.000 уников в день.
Я лучше заново сделаю все, но будучи уверенным, что проект будет стабильно и быстро работать.
Не думаю, что это целесообразно.
Людей, СПЕЦИАЛЬНО старающихся заспамить блоги одним и тем же сообщением — по крайней мере на мою продолжительную бытность я не встречал. Если повторно и публикуют — то случайно.
Имхо, усложнять существующую проблему — это не ценить время, которое можно потратить на более полезные и необходимые функции.
Анализ уникальности поста реализован в www.newsgrabber.info
Я не программер к сожалению, в тонкостях не разбираюсь.
Но юзал эту приблуду — налету анализирует сграбленные публикации и отсеивает «похожие». В принципе у меня есть файлы этого пакета. Если разработчикам LS будет интересно, могу предоставить. Думаю авторы не будут сильно в обиде :)
Тем более, что newsgrabber работает только на подключенных к системе доменах.
Сложный вопрос. Я задумывался об этом, однако ответа не нашел.
Я рассматриваю выдачу в поиске по блогам как дополнительный канал траффика помимо выдачи в обычном поиске.
Кроме того, в поиске по блогам ранжирование идет по умолчанию «по времени публикации», что логично, ибо блоговые записи быстро устаревают. Поэтому пингатор мегаважен.
А вот в обычном поиске по умолчанию вывод результатов идет по релятивантности. Так что нужно в обоих каналах выводиться :)
Логичнее было бы прятать кнопку после нажатия и показывать ajax-блок вместо нее, что типа производится операция. Проблему решает в два счета. А делов — 5 строк кода.
Да, есть подозрение, что могут не выдаваться из-за низкой частотности публикаций. Робот, типа, просто редко ходит. :)
По крайней мере это было бы логично со стороны разработчиков
Должна вестись. Если этого не происходит — скорее всего из-за того, что владельцы сайтов на LS не удосуживаются добавить ленту записей в поисковик по блогам.
Я туда одно время забивал ленты даже простых форумов на Yabb — прекрасно Яндекс-роботы их кушают :)
У Яндекса есть, насколько я знаю, пара роботов по блогам.
Один робот производит плановый обход всех зарегистированных блогов в базе в определенное время.
Второй робот (которого пингуют сами блоги сразу после публикации нового сообщения) — чешет в блог сразу после пинга. То есть проглатывает и выдает инфу в поиске по блогам гораздо раньше тех блогов, которые так не делают.
Такой пингатор — необходимое условие для включения сайта в раздел Сервисы.
У меня есть исходник такого пингатора для друпала. Думаю адаптировать его не составит труда:
function yandex_blogs_help($section) {
switch ($section) {
case 'admin/modules#description':
return t('Alerts blogs.Yandex.ru that your site\'s blogs have been updated.');
}
}
/**
* Implementation of hook_nodeapi().
* будет дергаться ядром каждый раз, когда создается нода любого типа
*/
function yandex_blogs_nodeapi($node, $op, $teaser = NULL, $page = NULL) {
global $base_url;
switch($op) {
case 'insert':
case 'update':
case 'delete':
//сработает при любом изменении статуса отображаемой ноды
if ($node->status==1)
//пингуем Яндекс если задано — имя сайта, иначе заголовок ноды
_yandex_blogs_doping($node->uid);
}
}
//
function _yandex_blogs_doping($uid) {
global $base_url;
global $user;
$account = user_load(array('uid' => $uid, 'status' => 1));
/*
// It sends not fully correct result: parameters appear in <string>..</string> tags
$result = xmlrpc('http://drupal47/pings_test_ping',//'http://ping.blogs.yandex.ru/RPC2',
'weblogUpdates.ping',
t("%name", array('%name' => $account->name)),
$base_url.'/'.pathauto_cleanstring($account->name).'/feed');
*/
// So we need to use something simplier than code in xmlrpc_request()
require_once './includes/xmlrpc.inc';
$result=true;
if ($res->code != 200) {
xmlrpc_error(-$res->code, $result->error);
$result=false;
}
$message = xmlrpc_message($res->data);
// Now parse what we've got back
if (!xmlrpc_message_parse($message)) {
// XML error
xmlrpc_error(-32700, t('Parser error'));
$result=false;
}
// Is the message a fault?
if ($message->messagetype == 'fault') {
xmlrpc_error($message->fault_code, $message->fault_string);
$result=false;
}
// Message must be OK
if($result==true) {
$result=$message->params[0];
watchdog('Yandex ping', t('blogs.Yandex.ru ping accomplished'), WATCHDOG_WARNING);
}
512 мега оперативки, псевдо VPS, 3 гига на винче.
При этом сайт падает уже при 300 униках в день.
Друпал — очень хорошая CMS. Без шуток. Можно собрать сайт любой направленности с любыми наворотами. Но его потребность в ресурсах — извините меня, выше крыши. Причем даже нанимались спецы для его оптимизации. Запросы кешируются. А сайт жрет памяти так, будто на него ходят 30.000 уников в день.
Я лучше заново сделаю все, но будучи уверенным, что проект будет стабильно и быстро работать.
Людей, СПЕЦИАЛЬНО старающихся заспамить блоги одним и тем же сообщением — по крайней мере на мою продолжительную бытность я не встречал. Если повторно и публикуют — то случайно.
Имхо, усложнять существующую проблему — это не ценить время, которое можно потратить на более полезные и необходимые функции.
Я не программер к сожалению, в тонкостях не разбираюсь.
Но юзал эту приблуду — налету анализирует сграбленные публикации и отсеивает «похожие». В принципе у меня есть файлы этого пакета. Если разработчикам LS будет интересно, могу предоставить. Думаю авторы не будут сильно в обиде :)
Тем более, что newsgrabber работает только на подключенных к системе доменах.
Сейчас посмотрел — фиды действительно не валидные. Надо править. Многие rss-трансляторы тоже отбраковывают инвалидные потоки.
Я рассматриваю выдачу в поиске по блогам как дополнительный канал траффика помимо выдачи в обычном поиске.
Кроме того, в поиске по блогам ранжирование идет по умолчанию «по времени публикации», что логично, ибо блоговые записи быстро устаревают. Поэтому пингатор мегаважен.
А вот в обычном поиске по умолчанию вывод результатов идет по релятивантности. Так что нужно в обоих каналах выводиться :)
По крайней мере это было бы логично со стороны разработчиков
Я туда одно время забивал ленты даже простых форумов на Yabb — прекрасно Яндекс-роботы их кушают :)
У Яндекса есть, насколько я знаю, пара роботов по блогам.
Один робот производит плановый обход всех зарегистированных блогов в базе в определенное время.
Второй робот (которого пингуют сами блоги сразу после публикации нового сообщения) — чешет в блог сразу после пинга. То есть проглатывает и выдает инфу в поиске по блогам гораздо раньше тех блогов, которые так не делают.
Такой пингатор — необходимое условие для включения сайта в раздел
У меня есть исходник такого пингатора для друпала. Думаю адаптировать его не составит труда:
function yandex_blogs_help($section) {
switch ($section) {
case 'admin/modules#description':
return t('Alerts blogs.Yandex.ru that your site\'s blogs have been updated.');
}
}
/**
* Implementation of hook_nodeapi().
* будет дергаться ядром каждый раз, когда создается нода любого типа
*/
function yandex_blogs_nodeapi($node, $op, $teaser = NULL, $page = NULL) {
global $base_url;
switch($op) {
case 'insert':
case 'update':
case 'delete':
//сработает при любом изменении статуса отображаемой ноды
if ($node->status==1)
//пингуем Яндекс если задано — имя сайта, иначе заголовок ноды
_yandex_blogs_doping($node->uid);
}
}
//
function _yandex_blogs_doping($uid) {
global $base_url;
global $user;
$account = user_load(array('uid' => $uid, 'status' => 1));
/*
// It sends not fully correct result: parameters appear in <string>..</string> tags
$result = xmlrpc('http://drupal47/pings_test_ping',//'http://ping.blogs.yandex.ru/RPC2',
'weblogUpdates.ping',
t("%name", array('%name' => $account->name)),
$base_url.'/'.pathauto_cleanstring($account->name).'/feed');
*/
// So we need to use something simplier than code in xmlrpc_request()
require_once './includes/xmlrpc.inc';
$result=true;
$req = '<?xml version="1.0"?>
<methodCall>
<methodName>weblogUpdates.ping</methodName>
<params>
<param>
<value>'.t("%name", array('%name' => $account->name)).'</value>
</param>
<param>
<value>'.$base_url.'/'.pathauto_cleanstring($account->name).'/feed</value>
</param>
</params>
</methodCall>';
$res = drupal_http_request('http://ping.blogs.yandex.ru/RPC2', array("Content-Type" => "text/xml"), 'POST', $req);
//$res = drupal_http_request($base_url.'/pings_test_ping', array("Content-Type" => "text/xml"), 'POST', $req);
if ($res->code != 200) {
xmlrpc_error(-$res->code, $result->error);
$result=false;
}
$message = xmlrpc_message($res->data);
// Now parse what we've got back
if (!xmlrpc_message_parse($message)) {
// XML error
xmlrpc_error(-32700, t('Parser error'));
$result=false;
}
// Is the message a fault?
if ($message->messagetype == 'fault') {
xmlrpc_error($message->fault_code, $message->fault_string);
$result=false;
}
// Message must be OK
if($result==true) {
$result=$message->params[0];
watchdog('Yandex ping', t('blogs.Yandex.ru ping accomplished'), WATCHDOG_WARNING);
}
if ($result === FALSE) {
watchdog('Yandex ping', t('Ping blogs.Yandex.ru FAULT'), WATCHDOG_WARNING);
}
}
формат строк между … — должен оставаться без изменений.
Роботу должно передаваться:
— Ник пользователя, создавшего новую публикацию
— Адрес RSS-ленты его личного блога