Написал небольшую статейку: http://angerslave.org.ru/2008/03/01/para-slov-o-rybalke Прошу оценить. Выдержка: И непосредственно код скрипта: PHP: <?php function process_urls($urls) { $errno = 0; $errstr = ''; $texts = array(); $ids = array(); $eofs = array(); $counter = 0; while (in_array(false, $ids) || (count($urls) != 0 && count($ids) == 0)) { foreach ($urls as $id => $href) { if (!isset($ids[$id]) || $ids[$id] === false) { if ($counter != 0 && ceil($counter / 100) == $counter / 100) sleep(1); $counter ++; $href = parse_url($href); $ids[$id] = fsockopen('213.180.204.20', 80, $errno, $errstr, 5); if ($ids[$id]) { $out = "GET ".$href['path']."?".$href['query']." HTTP/1.1\r\n"; $out .= "Host: ".$href['host']."\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($ids[$id], $out); $eofs[$id] = false; $texts[$id] = ''; } } } } while (in_array(false, $eofs)) { foreach ($eofs as $id => $eof) { if ($eof == false) { $texts[$id] .= fread($ids[$id], 4096); $eofs[$id] = feof($ids[$id]); } } } foreach ($ids as $id => $id_val) fclose($ids[$id]); foreach ($texts as $id => $href) { $text = $texts[$id]; $text = str_replace(array("\n", "\r", '', $text); preg_match( '#<h1 style="color\:black\; margin\-left\:0\;">Тема\: \«([^»]+)»</h1>((<p>[^<]+>/p<+)</div></td>#Sim', $text, $matches); preg_match_all('#<p>([^<]+)</p>#Sim', $matches[2], $matches2); mysql_query( 'INSERT DELAYED INTO data (title, textdata) VALUES ("'.mysql_escape_string($matches[1]). '", "'.mysql_escape_string(implode("\r\n", $matches2[1])). '"'); } } set_time_limit(3600); mysql_connect('localhost', 'root', 'root'); mysql_select_db('data'); mysql_query('CREATE TABLE IF NOT EXISTS `data` ( `title` VARCHAR( 255 ) NOT NULL , `textdata` TEXT NOT NULL );'); mysql_query('TRUNCATE TABLE `data`'); $themes = array('astronomy', 'geology', 'gyroscope', 'literature', 'marketing', 'mathematics', 'music', 'polit', 'agrobiologia', 'law', 'psychology', 'geography', 'physics', 'philosophy', 'chemistry', 'estetica'); $urls = array(); for ($i = 0; $i <= 50000; $i++) { $themes_copy = $themes; $use_themes = array(); do { $rand_index = array_rand($themes_copy); $use_themes[] = $themes_copy[$rand_index]; unset($themes_copy[$rand_index]); } while (count($themes_copy) && rand(0, 5)); $urls[] = 'http://referats.yandex.ru/all.xml?mix='.implode('%2c', $use_themes).'&'.implode('=on&', $use_themes).'=on'; } while (count($urls)) { process_urls(array_splice($urls, -10)); } Обсудим?
antonn, думаю что против, но в статье написал - только в целях тестирования. Да и после где-то 1000 запросов автоматически блочится сервис(для заданного IP похоже), так что особо-то и не получится прям аж наворовать нагенеренного ничего не значащего контента. Да и никаких "все права на тексты принадлежат яндекс инк., ссылка на источник обязательно, иначе сикирь башка" нет, даже есть , но Тестирование сайта на нагрузку в пределах веб-сервера, имхо, отнюдь не предоставление в массовое пользование.
не знаю, я обычно "бренчу" по клавиатуре, как по пианино Нафиг еще целую функцию городить, парсить яндекс бедный )) Мы как-нибудь своими силами.
Elkaz, есть определённые ограничения, связаные с русским языком. Определённые концентрации букв, определённое среднее количество букв в слове и т.д. А бить по клаве ничем не лучше for ($i = 0; $i <= 100000; $i++) { echo chr((int)rand(112, 255)); }. Как я написал в статье, это будет не очень приближено к боевым условиям.
Elkaz, а рандомно тыкать по клаве не лень? Чтобы нагенерить символов этак тысяч 50, сколько удёт времени и сил? Уж не проще ли пропарсить яндекс?
Clone Пока не было задач для генерации такого количества символов )) Опять же по клаве можно стучать кулаками - сразу несколько символов в секунду ))))) Ну для моих задач пока вполне хватает. Если понадобится - заюзаю этот парсер пасиба З.ы И зачем рандомно? ) Берем вводим ~100 символов, потом CTRL+A -> CTRL+C, потом пару раз CTRL+V, повторим, начиная с CTRL+A - и вот уже достаточно большое количество символов ))))
Elkaz, по сути аналог логирования apache + быстрый сбор статистики, которую можно показать юзерам + возможность расширить до полномасштабного анализа.
Анализ 750000 записей в пределах 15 секунд, кеширование. То есть минимум нагрузки при добавлении, минимум нагрузки при анализе. Пока лишь отдаётся статистика за месяц, за год и распределние по часам(0-23) юзерам используя amline. В планах - глубокий анализ(рефералы, хосты, страны, поисковые запросы и т.д.) для админа.
Горбунов Олег, http://angerslave.org.ru/rss Надо будет поправить... То желания нет, то времени... Спасибо за предложение
Clone Как раз нужна такая статистика, но писать лень Другим занят. Был бы рад. Особенно рефераллы + поисковые запросы интересуют. Готовые решение 50+ Кб с многокилометровыми копирайтами и мусором совсем не нравяться
Горбунов Олег, хм, а опера 9.2 несмотря на все ошибки вырвала фид Про поправить я и говорил, что поправить все ошибки...
sword dancer, почему бы не 2.0 сразу? Просто блог ставил давно, особо не копался, да и сейчас желания особо нет.