Ну это смотря сколько контента... У меня в управлении пару сайтов, где более 2млн. записей, базы по 40гб ;)
aktuba добавил 15.07.2011 в 03:17
DLE тоже не надо. Показать огроооооооооооооооооооооооомные минусы dle? =)
sqlite не лучший выбор. Когда тегов будет пара млн. - начнет очееееееееень сильно задумываться, проверено ;).
SMF лучший? o_O Это шутка или Вы серьезно так считаете? Ок... Может тогда подскажите, как быстро избавиться от сессий в этом движке? Реально...
Или может подскажете, как сделать нормальный автолоадер, чтобы не пришлось по коду скакать и искать, где блин подключается определенный файл?
$_REQUEST - это вообще шик. Покажите реальный пример, когда НЕОБХОДИМО использовать $_REQUEST! За все время, что я программирую (а это довольно долго) - ни разу не видел в этом необходимость... Там еще кучу интересного можно вспомнить, ну да ладно...
Теперь вопрос по вашему двигу: правда, что в вашем двиге используются функции в конфигах? И вы реально не понимаете, почему вас из-за этого считают глупым? =)))
Ну а выбор XML спорный... Как будете делать, например, реалтайм поиск? Автоподстановку тегов? И т.д.
Эмм... А может не надо так? =)
А зачем replace-то? update наверное, нет?
INSERT INTO table SET field="value" ON DUPLICATE KEY UPDATE field=VALUES(field)
примерно так.
Это "премиум"? О_о
И не должен - там нет контента, одни ссылки
aktuba добавил 07.07.2011 в 17:50
Так и есть. Начали с других алгоритмов, но функцию яндекса тоже изучали. Жаль, полноценно ее использовать в php не получилось - пришлось дописывать и переписывать.
aktuba добавил 08.07.2011 в 01:58
И это все мнения? Жаль... Думал, Вас заинтересует, как можно подобный парсер использовать =(
aktuba добавил 08.07.2011 в 14:40
Т.е., ни у кого, никаких предложений/вопросов нет? Не нужен никому подобный сервис?
Коротко это не описать... Достаточно много параметров и факторов учитывается для выделения контента из страницы. Да и не очень пока хочется рассказывать детали, если честно ;)
http://api.mail.ru/docs/guides/oauth/sites/ - вот это изучите, станет понятнее думаю;)
<?phpclass LoginID_Provider_Mailru extends LoginID_Provider { const AUTHORIZE_URL = 'https://connect.mail.ru/oauth/authorize'; const TOKEN_URL = 'https://connect.mail.ru/oauth/token'; const SALT = 'salt'; protected $_config = NULL; protected function execute_method($params) { if (!$params) $params = array(); $params['app_id'] = $this -> _config['app_id']; $params['secure'] = 1; $sig = ''; $url = ''; $i = 0; ksort($params); foreach($params as $key => $var) { $i++; $sig .= $key . '=' . $var; $url .= $key . '=' . $var; if ($i != count($params)) $url .= '&'; } $sig = md5($sig . $this -> _config['secret_key']); $url .= '&sig=' . $sig; $url = 'http://www.appsmail.ru/platform/api?' . $url; $data = NULL; $ch = curl_init(); try { curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $data = curl_exec($ch); curl_close($ch); } catch (Exception $e) { curl_close($ch); throw new LoginID_Exception($e -> getMessage(), NULL, 403); } return $data; } protected function get_user_info($uid = NULL, $token) { $params = array( 'method' => 'users.getInfo', 'session_key' => $token ); if (NULL !== $uid) $params['uid'] = $uid; $result = json_decode($this -> execute_method($params)); return $result[0]; } public function __construct($provider_name) { parent::__construct($provider_name); $this -> _config = Kohana::config('loginid/providers/mailru'); } public function login() { $mailru_key = md5(mt_rand(1, 1000) . $_SERVER['REMOTE_ADDR'] . mt_rand(1, 1000)); Session::instance() -> set('mailru_key', md5($mailru_key . self::SALT)); $data = array( 'client_id' => $this -> _config['app_id'], 'response_type' => 'code', 'redirect_uri' => $this -> return_url . '?key=' . $mailru_key, ); header('Location: ' . self::AUTHORIZE_URL . '?' . http_build_query($data, NULL, '&')); die(); } public function complete() { $key = Session::instance() -> get_once('mailru_key', NULL); if (empty($key)) throw new LoginID_Exception('Not found provider key', NULL, 403); $rkey = !empty($_GET['key']) ? $_GET['key'] : NULL; if (empty($rkey)) throw new LoginID_Exception('Not found get key', NULL, 403); $mailru_key = md5($rkey . self::SALT); $mailru_code = !empty($_GET['code']) ? $_GET['code'] : NULL; if (empty($mailru_code) || $mailru_key != $key) throw new LoginID_Exception('Login filed!', NULL, 403); $request = array( 'client_id' => $this -> _config['app_id'], 'client_secret' => $this -> _config['secret_key'], 'grant_type' => 'authorization_code', 'code' => $mailru_code, 'redirect_uri' => $this -> return_url . '?key=' . $rkey, ); $ch = curl_init(); try { curl_setopt($ch, CURLOPT_URL, self::TOKEN_URL); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $request); $data = curl_exec($ch); curl_close($ch); } catch (Exception $e) { curl_close($ch); throw new LoginID_Exception($e -> getMessage(), NULL, 403); } $data = json_decode($data); if (empty($data -> access_token)) throw new LoginID_Exception('Error Mail.ru responce!', NULL, 403); $user = $this -> get_user_info(NULL, $data -> access_token); if (empty($user -> uid)) throw new LoginID_Exception('Invalid user data returned from Mail.ru', NULL, 403); return array( 'identity' => !empty($user -> link) ? $user -> link : NULL, 'email' => !empty($user -> email) ? $user -> email : NULL, 'name' => !empty($user -> nick) ? $user -> nick : NULL, 'display_name' => !empty($user -> nick) ? $user -> nick : NULL, ); }}
Вот часть кода для mail.ru. Остальное - обычная работа с oauth. Будут вопросы - задавай.
P.S.: жестокий тут парсер =) ***91; - открывающая квадратная скобка, ***93; - закрывающая.