Как ускорить или оптимизировать

Статус
В этой теме нельзя размещать новые ответы.

sizam

Новичок
Как ускорить или оптимизировать

PHP:
while (!feof ($fp)) 
			{
			    $buffer = fgets($fp, 4096);
			    preg_match_all("#<title>(.+)</title>#sU", $buffer, $title);
			    preg_match_all("#<meta name=\"description\" content=\"(.+)\" />#sU", $buffer, $desc);
			    preg_match_all("#<meta name=\"keywords\" content=\"(.+)\" />#sU", $buffer, $key);
			   	if (!empty($title[1][0]))
			    {	
			    	_update("url", array('name'=>strip_tags($title[1][0])), array('id'=>$value['id']));   	
			    }
			    if (!empty($desc[1][0]))
			    {
			    	_update("url", array('desc'=>strip_tags($desc[1][0])), array('id'=>$value['id']));   	
			    }
			     if (!empty($key[1][0]))
			    {	
			    	_update("url", array('tags'=>strip_tags($key[1][0])), array('id'=>$value['id']));   	
			    }
			}

Есть 3 preg_match_all которые выберают титлы, куйворды и дески. Пробовал записывать полученные данные в массив, чтоб делать только один запрос в базу , а не три , но получатся ерунда , подскажите как этот код сделать более быстрым и грамотным.
 

zerkms

TDD infected
Команда форума
в приведённом коде ни одного запроса в базу нет.
 

Angerslave

Новичок
Во-первых, можно взять весь файл в память целиком. Во-вторых, можно скомбинировать всё в одно регулярное выражение. И в-третьих, вместо (.+) можно использовать ([^<]+) и ([^"]+) соответственно. Мда, и в-четвёртых, если совпадений планируется одно, то можно использовать просто preg_match.
 

iSlayter

Новичок
человек скопировал, видимо, отрывок из какого-то скрипта, на который указал хостер.

1. preg_match_all заменить на preg_match (судя по коду вам нужно получить тока первое совпадение)
2. заменить условия на:
PHP:
$update_arr = array();
if (!empty($title)) {
   $update_arr['name'] = $title;
}

if (!empty($desc)) {
  $update_arr['desc'] = $desc;
}

if (!empty($key)) {
  $update_arr['tags'] = $key;
}

if (!empty($update_arr)) {
   _update('url', $update_arr, array('id' => $id));
}
 

sizam

Новичок
iSlayter
Хостер мне не указывал , скрипт написал сам , но понимаю , что он уж сильно громоздкий.
 

Духовность™

Продвинутый новичок
sizam
в смысле громоздкий? что оптимизировать то надо? он сколько времени выполняется? 2 часа?
 

Stierus

Новичок
1. iSlayter в топике код оставил
2. Много титлов и метатегов в <body>...</body> нашёл ?
 

antson

Новичок
Партнер клуба
sizam
твоя проблема в while (!feof ($fp)) { }
подумай о досрочном прекращении цикла по условию, что нужные теги найдены , так как в 99% они все в первых 4к текста.
 

antson

Новичок
Партнер клуба
cDLEON
или что более вероятно , это СЕО анализирует конкурентов
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху