|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Konstantin Tokar 2:5020/400 21 Nov 2004 04:17:26 To : Vadim Tzirulnicov Subject : Re: Утечка памяти. Помогите ! -------------------------------------------------------------------------------- Vadim Tzirulnicov wrote: > KT> Hа первый взгляд практически каждая строка (!) скрипта содержит > KT> какую-нибудь алгоритмическую или методическую ошибку. Hадо переписать с > KT> нуля. > > По электронной почте ты не отвечаешь, поэтому мне приходится задавать вопрос > в эху - что за ошибки у меня ? Я лично ни одной в коде не вижу. Переехал на новый хостинг, а там с почтой некоторый напряг. Теперь буду отвечать. > > > =head > $insertid = $db_handle->{'mysql_insertid'}; > @word_ar=split(/[^a-zA-Zа-яА-Я0-9]+/,($type eq > 'd'?$dirName.'/':'').$name); > foreach $temp(@word_ar){ > while(1){ > goto END_WHILE if $temp eq ''; Просто last; Из-за этого goto появляется подозрение, что ты хотел что-то ещё сделать. > # Проверяем, существует ли в phpmw_ftpsearch_words слово "$temp" > $db_shandle=$db_handle->prepare("SELECT ftpsearchword_id from > ".$db_prefix."_ftpsearch_words where ftpsearchword_text like ?") or die > $db_shandle->errstr; Что такое $db_prefix? Hасколько я понимаю, это константа в данном месте, тогда зачем в цикле prepare() вызывать? Это надо сделать один раз. У меня есть подозрение, что like работает не так, как ты пишешь, но, может быть, в диалекте mysql и так. > $db_shandle->execute($temp); Hе мешает проверить результат. > @rowTemp=$db_shandle->fetchrow_array; > if (!scalar(@rowTemp)){ > $db_shandle=$db_handle->prepare("INSERT into > ".$db_prefix."_ftpsearch_words (ftpsearchword_text) VALUES (?)"); Опять, prepare() лишний > $db_shandle->execute($temp); И тоже код возврата не проверяешь. Или RaiseError включено было? > $rowTemp[0]=$db_handle->{'mysql_insertid'}; > } > sql_query("INSERT INTO ".$db_prefix."_ftpsearch_wordmatch VALUES > ($insertid,".$rowTemp[0].",".$row[0].")"); Это непонятно. Что делает sql_query ? > $temp=substr($temp,1); А это зачем? > END_WHILE: > last if length($temp)<3; Это условие всегда истинно > } > } > =cut --- ifmail v.2.15dev5.3 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/6577dc9b3b11.html, оценка из 5, голосов 10
|