Перейти к контенту
  • 0

Rebuild зависает


ZYV

Вопрос

Всем привет,

 

Обновился с 1.2 до последней версии 2.1 и теперь надо бы сделать ребилд всех постов с учетом того, что очень многое поменялось. Есть только одна небольшая проблема: ребилд доходит до 1950-го поста и виснет выдавая internal serverv error 500, даже если шаг ставить "по одному". Беда :D

 

Вот думаю, что бы сделать такое? Может быть можно сделать ребилд из консоли как-то? Кто-то уже сталкивался с этим?

 

P.S. Вообще я клиент IBR, но вопрос задаётся в открытом форуме, т.к. может быть кто-то из старых клиентов тоже имел такой опыт?!

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

Вот уж не знаю, так ли он прямо ему нечем заняться, тикет об английской версии висит уже целый день, хотя делов её вылать - 5 минут :D Вообще мне тут пришла сейчас мысль одна авангардная, попробую сейчас её и если не сработает - то уж открою тикет.

 

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

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Короче причина выяснена и она - в криворукости автора админки, который от избытка грамотности не знает, что limit-limit'ом, а если даже написать limit 600,700 всё равно делается select на 700 строк. Ужас сколько времени потребовалось, чтобы это сообразить, продираясь сквозь дебри кода и глупых комментов IPB.. :D

 

Надеюсь Smile поможет мне с патчем.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

В общем так я не недождался ответа за 12 дней. Выбрал сегодня время посмотреть поближе самому. В общем такое впечатление, что всё гораздо проще, автор(ы) IPB не знают синтаксиса команды LIMIT. Для ленивых: http://dev.mysql.com/doc/refman/4.0/ru/select.html

Выражение LIMIT может использоваться для ограничения количества строк, возвращенных командой SELECT. LIMIT принимает один или два числовых аргумента. Эти аргументы должны быть целочисленными константами. Если заданы два аргумента, то первый указывает на начало первой возвращаемой строки, а второй задает максимальное количество возвращаемых строк. При этом смещение начальной строки равно 0 (не 1):

Насколько я понимаю, автор наивно считает, что второй аргумент - это конец, а первый - начало. Отсюда и грабли при запросах типа LIMIT 3000, 3500 (=> LIMIT 3000, 500). Сделал следующие изменения в rebuild.php в rebuild_posts:

 

$end	= intval( $this->ipsclass->input['pergo'] ) ? intval( $this->ipsclass->input['pergo'] ) : 100;
// ZYV
// $end   += $start;
$output = array();

// ZYV
$tmp = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'pid', 'from' => 'posts', 'limit' => array($start+$end,1)  ) );	
// $tmp = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'pid', 'from' => 'posts', 'limit' => array($end,1)  ) );

// $text = "<b>Файлов проверено: $end, продолжение...</b><br />".implode( "<br />", $output );
//ZYV
$text = "<b>Файлов проверено: $end ($start), продолжение...</b><br />".implode( "<br />", $output );
// $url  = "{$this->ipsclass->form_code}&code=".$this->ipsclass->input['code'].'&pergo='.$this->ipsclass->input['pergo'].'&st='.$end;
$url  = "{$this->ipsclass->form_code}&code=".$this->ipsclass->input['code'].'&pergo='.$this->ipsclass->input['pergo'].'&st='.($end + $start);

Вроде rebuild сделать удалось но я не уверен, что при этом были охвачены все сообщения (ну там края диапазона..), так что если кто делать будет - подумайте сначала, всё ли у меня правильно.

 

Теперь надо бы разобраться с генератором превьюшек, что-то он у меня тоже зависал... В общем расстроен я. Всё самому пришлось делать, хотя явно баг IPB.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
хм.. у меня тоже подобные траблы были, но я решил что это из-за ограничений кол-ва запросов в бд у хостера.. :D
Ссылка на комментарий
Поделиться на других сайтах

  • 0
НУ А ЧТО ЖЕ МОЛЧАЛ-ТО!? :D Когда я мучался и искал людей, которые бы подтвердили, что это не меня колбасит, а дело тут явно в кривых ручках?! Давай тогда, как время будет, попробуй мой фикс (см. выше, код чуть изменил). Теперь надо всё это в официальный дистрибутив к Матту отправить, а прямого доступа к их поддержки и времени у меня нету.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

С картинками такая же фигня, кстати. rebuild_thumbnails:

 

// ZYV
//		$end   += $start;

//		$tmp = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'attach_id', 'from' => 'attachments', 'limit' => array($end,1)  ) );
// ZYV
	$tmp = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'attach_id', 'from' => 'attachments', 'limit' => array($end+$start,1)  ) );

		// ZYV	
//			$text = "<b>Файлов проверено: $end, продолжение...</b><br />".implode( "<br />", $output );
//			$url  = "{$this->ipsclass->form_code}&code=".$this->ipsclass->input['code'].'&pergo='.$this->ipsclass->input['pergo'].'&st='.$end;
		$text = "<b>Файлов проверено: $end ($start), продолжение...</b><br />".implode( "<br />", $output );
		$url  = "{$this->ipsclass->form_code}&code=".$this->ipsclass->input['code'].'&pergo='.$this->ipsclass->input['pergo'].'&st='.($end+$start);

 

Подозреваю, что и со всем остальным тоже.

 

rebuild_attachdata:

 

// ZYV
//		$end   += $start;

//ZYV		
//		$tmp = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'attach_id', 'from' => 'attachments', 'limit' => array($end,1) ) );
	$tmp = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'attach_id', 'from' => 'attachments', 'limit' => array($end+$start,1) ) );

// ZYV			
//			$text = "<b>Файлов проверено: $end, продолжение...</b><br />".implode( "<br />", $output );
//			$url  = "{$this->ipsclass->form_code}&code=".$this->ipsclass->input['code'].'&pergo='.$this->ipsclass->input['pergo'].'&st='.$end;
		$text = "<b>Файлов проверено: $end ($start), продолжение...</b><br />".implode( "<br />", $output );
		$url  = "{$this->ipsclass->form_code}&code=".$this->ipsclass->input['code'].'&pergo='.$this->ipsclass->input['pergo'].'&st='.($end+$start);
		$time = 10;

 

На счастье диалапщикам теперь у всех картинок у меня новые превьюшки :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Я говорю конкретно про последнюю на данный момент версию 2.1.4 [RUS] (файл ibr_2_1_4.zip) скачанную 04.02.06 из Клиент-центра IBResource. Если хотите, могу перекачать и проверить ещё раз, что приведенные выше ошибки в коде (перепутаны аргументы у LIMIT - второй аргумент не кол-во строк, а конечный оффсет) присутствуют.

 

Не понимаю вашего упорства в отрицании очевидного. Хорошо, через неделю-две принципиально напишу Матту, если вы не предпримете соответствующий действий и обсудим его ответ.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Не понимаю вашего упорства в отрицании очевидного. Хорошо, через неделю-две принципиально напишу Матту, если вы не предпримете соответствующий действий и обсудим его ответ.

не надо угрожать, Вы напишете через неделю-две Вам ответят еще через две.

 

Ваше исправление мне было не очень понятно пока я не посмотрел исходняе коды. Ошибка действительно имеет место быть.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Это не угроза (... довольно странно было полагать, что такие мои действия принесли бы вам вред), просто другого выхода я не видел по прошествию уже 3.142.. недель (вопрос был задан 6-го февраля). Заменательная дата.

 

Ошибка действительно имеет место быть.

Я рад, что, в итоге, мы сошлись во мнении. Надеюсь, она будет исправлена в следующей версии.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.