deni.pc
Гуру форума
- Регистрация
- 6 Сен 2006
- Сообщения
- 201
- Реакции
- 58
- Автор темы
- #1
Необходимо определить наличие слов из файла words.txt в базе. В общем и целом все работает, но...
... и тут начинается проблема.
В базе около 70000 записей, цикл доходит то до 2434-ой записи, то до 4183-ой, то до еще какойто случайной и останавливается.
Есть подозрения, что array_intersect ведет себя как то некорректно (организовывал вывод на эран 70000 записей - все работает). Используемый код ниже:
$keys = file('words.txt');
array_walk($keys,create_function('&$v,$k','$v=trim(strtolower($v));'));
$query = "SELECT id_link,title,longdescription FROM $links WHERE status = 1";
$result = mysql_query($query, $link);
$b = mysql_num_rows($result);
echo ("<BR>Elements in the base: $b");
while ($row = mysql_fetch_array($result))
{ $n++;
$contents=str_replace (' -', ' ', $row["title"]);
$contents=str_replace ('.', ' ', $contents);
$contents=str_replace (',', ' ', $contents);
$contents=str_replace ('!', ' ', $contents);
$contents=str_replace ('?', ' ', $contents);
$contents=str_replace (':', ' ', $contents);
$contents=str_replace (';', ' ', $contents);
$contents=str_replace (')', ' ', $contents);
$contents=str_replace ('(', ' ', $contents);
$contents=str_replace ('"', ' ', $contents);
$arr = explode(' ', $contents);
$contents=str_replace (' -', ' ', $row["longdescription"]);
$contents=str_replace ('.', ' ', $contents);
$contents=str_replace (',', ' ', $contents);
$contents=str_replace ('!', ' ', $contents);
$contents=str_replace ('?', ' ', $contents);
$contents=str_replace (':', ' ', $contents);
$contents=str_replace (';', ' ', $contents);
$contents=str_replace (')', ' ', $contents);
$contents=str_replace ('(', ' ', $contents);
$contents=str_replace ('"', ' ', $contents);
$arr2 = explode(' ', $contents);
array_walk($arr,create_function('&$v,$k','$v=trim(strtolower($v));'));
array_walk($arr2,create_function('&$v,$k','$v=trim(strtolower($v));'));
if (count (array_intersect($keys,$arr)))
{
$query = 'UPDATE '.$links.' SET status = 0, id_cat = '.$id_cat.' WHERE id_link = '. $row["id_link"];
$result2 = mysql_query($query, $link);
if ($result2) echo ("<BR>$n. in title - ".$row["title"]); else {echo('Error in title');}
} else
{
if (count (array_intersect($keys,$arr2)))
{
$query = 'UPDATE '.$links.' SET status = 0, id_cat = '.$id_cat.' WHERE id_link = '. $row["id_link"];
$result = mysql_query($query, $link);
if ($result) echo ("<BR>$n. in desc - ".$row["longdescription"]); else {echo('Error in desc');}
} else {
echo ("<BR>$n. Ненайдено - ".$row["title"]." : ".$row["longdescription"]);
}
}
}
Может я что-то криво объяснил, мало опыта, заранее прошу - сильно не ругайтесь
... и тут начинается проблема.
В базе около 70000 записей, цикл доходит то до 2434-ой записи, то до 4183-ой, то до еще какойто случайной и останавливается.
Есть подозрения, что array_intersect ведет себя как то некорректно (организовывал вывод на эран 70000 записей - все работает). Используемый код ниже:
$keys = file('words.txt');
array_walk($keys,create_function('&$v,$k','$v=trim(strtolower($v));'));
$query = "SELECT id_link,title,longdescription FROM $links WHERE status = 1";
$result = mysql_query($query, $link);
$b = mysql_num_rows($result);
echo ("<BR>Elements in the base: $b");
while ($row = mysql_fetch_array($result))
{ $n++;
$contents=str_replace (' -', ' ', $row["title"]);
$contents=str_replace ('.', ' ', $contents);
$contents=str_replace (',', ' ', $contents);
$contents=str_replace ('!', ' ', $contents);
$contents=str_replace ('?', ' ', $contents);
$contents=str_replace (':', ' ', $contents);
$contents=str_replace (';', ' ', $contents);
$contents=str_replace (')', ' ', $contents);
$contents=str_replace ('(', ' ', $contents);
$contents=str_replace ('"', ' ', $contents);
$arr = explode(' ', $contents);
$contents=str_replace (' -', ' ', $row["longdescription"]);
$contents=str_replace ('.', ' ', $contents);
$contents=str_replace (',', ' ', $contents);
$contents=str_replace ('!', ' ', $contents);
$contents=str_replace ('?', ' ', $contents);
$contents=str_replace (':', ' ', $contents);
$contents=str_replace (';', ' ', $contents);
$contents=str_replace (')', ' ', $contents);
$contents=str_replace ('(', ' ', $contents);
$contents=str_replace ('"', ' ', $contents);
$arr2 = explode(' ', $contents);
array_walk($arr,create_function('&$v,$k','$v=trim(strtolower($v));'));
array_walk($arr2,create_function('&$v,$k','$v=trim(strtolower($v));'));
if (count (array_intersect($keys,$arr)))
{
$query = 'UPDATE '.$links.' SET status = 0, id_cat = '.$id_cat.' WHERE id_link = '. $row["id_link"];
$result2 = mysql_query($query, $link);
if ($result2) echo ("<BR>$n. in title - ".$row["title"]); else {echo('Error in title');}
} else
{
if (count (array_intersect($keys,$arr2)))
{
$query = 'UPDATE '.$links.' SET status = 0, id_cat = '.$id_cat.' WHERE id_link = '. $row["id_link"];
$result = mysql_query($query, $link);
if ($result) echo ("<BR>$n. in desc - ".$row["longdescription"]); else {echo('Error in desc');}
} else {
echo ("<BR>$n. Ненайдено - ".$row["title"]." : ".$row["longdescription"]);
}
}
}
Может я что-то криво объяснил, мало опыта, заранее прошу - сильно не ругайтесь