将 phpBB3 论坛迁移到 Discourse

我好像成了这里唯一发帖的人……

就在我要发布新的 Discourse 论坛时,我们发现了一个非常奇怪的问题!我被这个问题难住了,希望这里有人能指点一下……

情况是这样的:我从 phpBB3 导入了两个数据库到 Discourse。第一个是归档,基本上是我们 15 年前切分成两部分并冻结的现有论坛。另一半论坛则保持活跃并不断发展。我原本希望导入工具能在导入时自动合并它们,结果确实如此!:smiley:

但现在我发现了一个用户的特殊情况,我需要知道这只是个例,还是影响了其他人,以及如何查找其他类似情况。

该用户创建了两个账户,都存在于当前论坛中。假设旧账户名为 OldName,新账户名为 NewName。

在导入后的 Discourse 中,现在有两个用户:一个叫 OldName,而本应是 NewName 的账户被重命名为 OldName1。此外,OldName 的帖子也被合并到了 OldName1 中。

我完全不明白为什么只有这个用户出现了这种情况,因为还有其他拥有双重账户的用户似乎并未受到影响。

有人知道这里可能发生了什么吗?
有没有办法搜索其他类似案例?

1 个赞

但可能并非如你所想。如果你只是运行了两次导入器,所有的 import_id 自定义字段都会发生冲突,导致旧数据库中用户 ID 为 123 的用户现在与新建数据库中用户 ID 为 123 的用户变成了同一个人。主题和帖子也是如此。

我非常确定,所有在旧数据库和新数据库中同时存在的用户 ID(以及主题、帖子,可能还有分类)都会与旧数据库中的对应项合并。

你需要采取一些措施,确保 import_id 不会发生冲突(例如删除旧的 ID,或者修改导入脚本,使其在每次导入时生成唯一的 ID)。

4 个赞

嗯……反正它们本来就是同一个东西吧?
我的意思是,这基本上就是同一个论坛,只是一部分继续运行,另一部分则被冻结在了时间里。所以用户 ID 123 仍然是用户 ID 123,帖子和主题的 ID 也是如此吗?

你说的 import_id 自定义字段是什么意思?

论坛看起来没问题,所有主题、帖子等都在原位。将它们合并正是我们的初衷吧?

除了那个特定用例外,我没发现其他用户/帖子/主题有任何问题?

也许这样解释会更清楚:

最初只有一个 phpBB 论坛。在某个时间点,我克隆了它。其中一个克隆体保持关闭,变成了存档;另一个部分,我删除了最旧的帖子(这些帖子现在已在存档中),并继续开放使用。在那个开放的论坛中,用户、主题、帖子等不断增加,但从未在 ID 层面发生过变更。因此,我原本以为导入脚本会将存档和当前论坛视为同一数据库的两个部分(因为它们确实如此),并将其作为增量导入处理。而它确实这样做了吗?

所以,请帮我理解一下,在你看来到底哪里出错了?因为你指出的问题,恰恰正是我希望它实现的功能……

如果第二个论坛是第一个论坛的超集,那我不明白你为什么要同时导入它们。但只要新论坛没有使用与第一个论坛相同的用户 ID、帖子 ID 或主题 ID,你就应该没问题。

当导入用户、主题或帖子时,会创建一个名为 “import_id” 的 XxxCustomField,以便你可以追踪从旧论坛到新论坛的映射关系。

某些导入工具还会在用户名变更时创建一个 import_username 自定义字段。你可以执行类似以下的操作:

cd /var/discourse
rails c
u=User.find_by_username('username-youwant')
u.custom_fields

来查看这些字段。

1 个赞

因为我想将归档部分重新合并到整个论坛中,而不是让一个论坛分成两个“半截”。现在我不需要再维护一个独立的、古老的 phpBB2 归档(以前还得想办法把它转换成 Discourse 格式)……现在它又完整了 :slight_smile:(我们当时做归档是为了减轻服务器负载)。

我试了你的查询,谢谢。
针对我帖子中的用例,对于 NewName 我得到了 {"import_id"=>"21293"}
而对于 OldName1,它返回了 {"import_id"=>"8800", "import_username"=>"OldName"}
所以,哇,它确实显示了那里发生了什么……有没有什么理由让它决定 import_id8800 属于导入用户名 NewName?毕竟它们的 import_ID 不同。

有没有办法进行更通用的搜索?因为我不知道哪些用户受到了影响,这正是我试图弄清楚的,所以我也不知道 username-youwant 部分应该填什么。

一种可行的方法是:

  • 恢复到归档导入完成后立即创建的备份。
  • 清除帖子、主题、分类和用户中的 import_id 值。
  • 执行当前论坛的导入操作。

执行此操作时,系统应通过电子邮件地址匹配并合并用户。

4 个赞

没错。它们的 import_id 不同,但用户名相同。如果你希望它们被视为同一用户,它们必须拥有相同的用户名(或者你可以设法让它们拥有相同的 import_id)。

也许可以搜索:

User.where("username like '%1'")

这也会捕获那些恰好希望用户名以 1 结尾的用户。

这将完美运行……除非他们的电子邮件地址已更改。

无论你采用何种方法,你都将不得不手动解决一些类似的问题。

1 个赞

相当实用。我正准备将我的游戏论坛迁移到 Discord。我之前使用的 phpBB 托管服务(即这个:https://www.cloudways.com/en/phpbb-hosting.php)不支持除 PHP 以外的应用程序。因此,我正在探索其他平台。

我尝试将 phpBB 3.2.9 论坛迁移到 Discourse。我有大约 2,800 名用户和近 36,000 篇帖子。我使用了 @gerhard 的 Git 仓库中的 phpbb3 分支进行导入。

用户和私信的迁移工作正常,但帖子迁移遇到了问题。目前只有大约 2,800 篇帖子成功迁移。我收到了类似以下的错误信息:

    12201 / 35281 ( 34.6%)  [68323 items/min]  Failed to map post with ID 14742
undefined method `name' for nil:NilClass
/var/www/discourse/script/import_scripts/phpbb3/support/bbcode/xml_to_markdown.rb:57:in `visit'
/var/www/discourse/script/import_scripts/phpbb3/support/bbcode/xml_to_markdown.rb:25:in `convert'
/var/www/discourse/script/import_scripts/phpbb3/support/text_processor.rb:41:in `process_raw_text'
/var/www/discourse/script/import_scripts/phpbb3/support/text_processor.rb:68:in `process_post'
/var/www/discourse/script/import_scripts/phpbb3/importers/post_importer.rb:35:in `map_post'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:130:in `block (2 levels) in import_posts'
/var/www/discourse/script/import_scripts/base.rb:491:in `block in create_posts'
/usr/local/lib/ruby/gems/2.6.0/gems/rack-mini-profiler-1.1.4/lib/patches/db/mysql2.rb:8:in `each'
/usr/local/lib/ruby/gems/2.6.0/gems/rack-mini-profiler-1.1.4/lib/patches/db/mysql2.rb:8:in `each'
/var/www/discourse/script/import_scripts/base.rb:490:in `create_posts'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:128:in `block in import_posts'
/var/www/discourse/script/import_scripts/base.rb:870:in `block in batches'
/var/www/discourse/script/import_scripts/base.rb:869:in `loop'
/var/www/discourse/script/import_scripts/base.rb:869:in `batches'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:186:in `batches'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:122:in `import_posts'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:33:in `execute'
/var/www/discourse/script/import_scripts/base.rb:47:in `perform'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:22:in `perform'
./script/import_scripts/phpbb3.rb:33:in `<module:PhpBB3>'
./script/import_scripts/phpbb3.rb:14:in `<module:ImportScripts>'
./script/import_scripts/phpbb3.rb:13:in `<main>'
    12202 / 35281 ( 34.6%)  [68322 items/min]  Failed to map post with ID 14744
undefined method `name' for nil:NilClass

我不是 Ruby 专家,所以不太清楚如何调试这个问题。看起来似乎缺少某个方法。但该如何获取这些方法?为什么有近 2,800 篇帖子能够成功迁移?

有什么想法能解释这个问题的成因,以及我该如何修复它吗?

谢谢!

1 个赞

代码或数据库中偶尔会出现一些小麻烦(gremlins)或捣乱的小妖精(goblins)。

如果你的迁移在遇到错误时停止(听起来这次确实如此),我会查看错误信息,进入脚本中出问题的文件,并用一个简单的结构将错误包裹起来:

begin
   # 出问题的 Ruby 代码行或几行
rescue
   puts "错误!在 <出问题的例程> 中,变量 #{variable}  blah blah 我的提示信息"
end

我最近迁移了超过 100 万篇帖子,像上面那样捕获错误并“继续前进”真是救了我一命。

每次迁移的情况都不同,虽然我没有其他人那么多经验,但我用大约 20 种不同的方式做过 100 次左右的迁移,哈哈。我的经验是,begin rescue end 结构非常重要。

当然,你也可以深入挖掘,看看之后是否存在更大的问题;但有时候,你只是想继续推进迁移工作 :slight_smile:

2 个赞

欢迎 @TBauer :wave:

也许你忽略了首帖中的这条警告。

2 个赞

@TBauer 似乎正在使用 这个实验性分支,所以我想这没问题。它仍然不受支持,但我还是想知道是什么导致了这个错误。

@TBauer 能否通过私信发送给我 ID 为 14742 的帖子在 phpbb_posts 表中 post_text 列的内容,或者在这里贴出来?

我猜你最近升级到了 phpBB 3.2,但旧的 BBCode 格式尚未完全转换为新格式。这就是为什么在 2800 篇帖子后可能会失败。如果是这种情况,你可能需要在 CLI 中运行 phpBB 3.2+ 文本重解析器。导入脚本目前不支持混合使用旧的和新的 BBCode 存储格式,而使用新格式时,BBCode 到 Markdown 的转换效果会好得多。:wink:

4 个赞

不,迁移并没有停止。脚本会一直运行直到正常结束。它只是没有迁移大量帖子。在这个案例中,我收到了如上所示的消息。我检查了数据库中的几条帖子,发现这些帖子都是没有 XML 代码的旧帖子。

@Helmi:我当然读过这个。这就是为什么我使用了代码的实验性分支。:wink:

1 个赞

也许这就是解决方案。我会先尝试这个方法。我意识到,失败的帖子是 BBCode 格式,而不是 XML 格式……所以接下来的尝试是在重新解析后再进行转换……

2 个赞

抱歉,我在读你的帖子时,这一点对我来说并不完全清楚。

@Helmi: 没问题。:smiley:

@gerhard: 成功了!将帖子转换为新格式后,我成功导入了帖子。仅在导入四个帖子时出现了一个异常,但对我来说这没问题。

   35264 / 35281 (100.0%)  [4879 items/min]  创建帖子 39353 时发生异常。已跳过。
PostReply 存在未知属性 'reply_id'。
/usr/local/lib/ruby/gems/2.6.0/gems/activemodel-6.0.1/lib/active_model/attribute_assignment.rb:53:in `_assign_attribute'
/usr/local/lib/ruby/gems/2.6.0/gems/activemodel-6.0.1/lib/active_model/attribute_assignment.rb:44:in `block in _assign_attributes'
/usr/local/lib/ruby/gems/2.6.0/gems/activemodel-6.0.1/lib/active_model/attribute_assignment.rb:43:in `each'
/usr/local/lib/ruby/gems/2.6.0/gems/activemodel-6.0.1/lib/active_model/attribute_assignment.rb:43:in `_assign_attributes'
/usr/local/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/attribute_assignment.rb:22:in `_assign_attributes'
/usr/local/lib/ruby/gems/2.6.0/gems/activemodel-6.0.1/lib/active_model/attribute_assignment.rb:35:in `assign_attributes'
/usr/local/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/core.rb:326:in `initialize'
/usr/local/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/inheritance.rb:70:in `new'
/usr/local/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/inheritance.rb:70:in `new'
/usr/local/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/reflection.rb:158:in `build_association'
/usr/local/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/associations/association.rb:325:in `build_record'
/usr/local/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/associations/collection_association.rb:108:in `build'
/usr/local/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/associations/collection_proxy.rb:316:in `build'
/var/www/discourse/app/models/post.rb:1064:in `create_reply_relationship_with'
/var/www/discourse/app/models/post.rb:750:in `block in save_reply_relationships'
/var/www/discourse/app/models/post.rb:748:in `each'
/var/www/discourse/app/models/post.rb:748:in `save_reply_relationships'
/var/www/discourse/lib/post_creator.rb:187:in `block in create'
/var/www/discourse/lib/post_creator.rb:360:in `block (2 levels) in transaction'
/usr/local/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/database_statements.rb:281:in `block in transaction'
/usr/local/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'
/usr/local/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
/usr/local/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/transaction.rb:278:in `within_new_transaction'
/usr/local/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/database_statements.rb:281:in `transaction'
/usr/local/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:212:in `transaction'
/var/www/discourse/lib/post_creator.rb:359:in `block in transaction'
/var/www/discourse/lib/distributed_mutex.rb:33:in `block in synchronize'
/var/www/discourse/lib/distributed_mutex.rb:29:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:29:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:14:in `synchronize'
/var/www/discourse/lib/post_creator.rb:358:in `transaction'
/var/www/discourse/lib/post_creator.rb:168:in `create'
/var/www/discourse/script/import_scripts/base.rb:555:in `create_post'
/var/www/discourse/script/import_scripts/base.rb:503:in `block in create_posts'
/usr/local/lib/ruby/gems/2.6.0/gems/rack-mini-profiler-1.1.4/lib/patches/db/mysql2.rb:8:in `each'
/usr/local/lib/ruby/gems/2.6.0/gems/rack-mini-profiler-1.1.4/lib/patches/db/mysql2.rb:8:in `each'
/var/www/discourse/script/import_scripts/base.rb:490:in `create_posts'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:128:in `block in import_posts'
/var/www/discourse/script/import_scripts/base.rb:870:in `block in batches'
/var/www/discourse/script/import_scripts/base.rb:869:in `loop'
/var/www/discourse/script/import_scripts/base.rb:869:in `batches'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:186:in `batches'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:122:in `import_posts'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:33:in `execute'
/var/www/discourse/script/import_scripts/base.rb:47:in `perform'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:22:in `perform'
script/import_scripts/phpbb3.rb:33:in `<module:PhpBB3>'
script/import_scripts/phpbb3.rb:14:in `<module:ImportScripts>'
script/import_scripts/phpbb3.rb:13:in `<main>'

感谢提供导入工具以及出色的工作!:slight_smile:

3 个赞

你好 @gerhard,我们实际上正在使用这个脚本来导入一个非常古老的 phpBB 论坛,以避免其被删除。一切进展顺利,但在最后阶段,论坛出现了编码问题。标题和帖子内容显示为乱码。

该论坛原本是法语的,我们从 phpBB 下载的 SQL 转储文件是 UTF-8 编码的。请问我们可能漏掉了什么?

非常感谢,这项工作太棒了!:open_mouth:

可能在某处存在编码不匹配……有人将其称为 MySQL 编码地狱,这并非没有道理。

很久以前,我创建了一个 修复数据库的脚本,用于处理那些在 latin1 编码的表中存储了 UTF-8 数据的情况。或许它能帮上忙?否则,你就得自己解决这个问题了。

3 个赞

Hi @gerhard and thanks for replying. What should be the format of my SQL dump file please ? Actually VS Code says to me that it is UTF-8. So… it should work no ?

That issues of encoding drive me crazy… :frowning:

@gerhard : EDIT : An example of what I have in the dump file below.

#
# phpBB Backup Script
# Dump of tables for phpbb3_
# DATE : 06-04-2020 08:26:04 GMT
#
# Table: phpbb3_posts
DROP TABLE IF EXISTS phpbb3_posts;
CREATE TABLE `phpbb3_posts` (
  `post_id` mediumint(8) unsigned NOT NULL auto_increment,
  `topic_id` mediumint(8) unsigned NOT NULL default '0',
  `forum_id` mediumint(8) unsigned NOT NULL default '0',
  `poster_id` mediumint(8) unsigned NOT NULL default '0',
  `icon_id` mediumint(8) unsigned NOT NULL default '0',
  `poster_ip` varchar(40) collate utf8_bin NOT NULL default '',
  `post_time` int(11) unsigned NOT NULL default '0',
  `post_approved` tinyint(1) unsigned NOT NULL default '1',
  `post_reported` tinyint(1) unsigned NOT NULL default '0',
  `enable_bbcode` tinyint(1) unsigned NOT NULL default '1',
  `enable_smilies` tinyint(1) unsigned NOT NULL default '1',
  `enable_magic_url` tinyint(1) unsigned NOT NULL default '1',
  `enable_sig` tinyint(1) unsigned NOT NULL default '1',
  `post_username` varchar(255) collate utf8_bin NOT NULL default '',
  `post_subject` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL default '',
  `post_text` mediumtext character set utf8 collate utf8_unicode_ci NOT NULL,
  `post_checksum` varchar(32) collate utf8_bin NOT NULL default '',
  `post_attachment` tinyint(1) unsigned NOT NULL default '0',
  `bbcode_bitfield` varchar(255) collate utf8_bin NOT NULL default '',
  `bbcode_uid` varchar(8) collate utf8_bin NOT NULL default '',
  `post_postcount` tinyint(1) unsigned NOT NULL default '1',
  `post_edit_time` int(11) unsigned NOT NULL default '0',
  `post_edit_reason` varchar(255) collate utf8_bin NOT NULL default '',
  `post_edit_user` mediumint(8) unsigned NOT NULL default '0',
  `post_edit_count` smallint(4) unsigned NOT NULL default '0',
  `post_edit_locked` tinyint(1) unsigned NOT NULL default '0',
  PRIMARY KEY  (`post_id`),
  KEY `forum_id` (`forum_id`),
  KEY `topic_id` (`topic_id`),
  KEY `poster_ip` (`poster_ip`),
  KEY `poster_id` (`poster_id`),
  KEY `post_approved` (`post_approved`),
  KEY `tid_post_time` (`topic_id`,`post_time`),
  KEY `post_username` (`post_username`)
) ENGINE=MyISAM AUTO_INCREMENT=33585 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

INSERT INTO phpbb3_posts (post_id, topic_id, forum_id, poster_id, icon_id, poster_ip, post_time, post_approved, post_reported, enable_bbcode, enable_smilies, enable_magic_url, enable_sig, post_username, post_subject, post_text, post_checksum, post_attachment, bbcode_bitfield, bbcode_uid, post_postcount, post_edit_time, post_edit_reason, post_edit_user, post_edit_count, post_edit_locked) VALUES (3, 2, 1, 2, 0, '82.225.50.160', 1135852994, 1, 0, 1, 1, 1, 0, '', 'FORUM EFFACER PAR UN HACKER - Le 28/12/05 !!!', 'Le 28/12/05, le forum a été victime <!-- s:cry: --><img src=\"{SMILIES_PATH}/icon_cry.gif\" alt=\":cry:\" title=\"Crying or Very sad\" /><!-- s:cry: --> de la visite d\'un hacker <!-- s:pan --><img src=\"{SMILIES_PATH}/panpan.gif\" alt=\":pan\" title=\"panpan\" /><!-- s:pan --> peut scrupuleux <!-- s:sick --><img src=\"{SMILIES_PATH}/sick.gif\" alt=\":sick\" title=\"sick\" /><!-- s:sick --> : celui-ci après avoir trouvé le moyen de se connecter au Forum en tant qu?Administrateur du forum a tout simplement supprimé la totalité de nos messages <!-- s:evil: --><img src=\"{SMILIES_PATH}/icon_evil.gif\" alt=\":evil:\" title=\"Evil or Very Mad\" /><!-- s:evil: --> !!! \r\n\r\nMalheureusement et je m\'en excuse <!-- s:oops: --><img src=\"{SMILIES_PATH}/icon_redface.gif\" alt=\":oops:\" title=\"Embarassed\" /><!-- s:oops: -->  (j\'aurai du y penser!!!) aucune sauvegarde du site n\'existait et je n\'ai pu récupérer aucun des anciens messages !!!\r\n\r\n[b:f3vjqlv5]C EST A  NOUS MAINTENANT QU IL APPARTIENT DE FAIRE RENAITRE CE FORUM ET DE MONTRER QUE CE N EST PAS CE GENRE DE TERRORISME QUI EMPECHERA LE DUB ET LES SOUNDS SYSTEM DE PROGRESSER !!![/b:f3vjqlv5]:thumb \r\n\r\nPerdu pour perdu : n\'ayant pu récupérer les messages, j\'ai préféré tout effacer et installer la dernière version logiciel du forum qui corrige un certain nombre de failles de sécurité. Du coup [b:f3vjqlv5]LES ANCIENS MEMBRES DOIVENT CE RE-ENGERISTRER...[/b:f3vjqlv5]\r\n\r\nRespect to All\r\nRed Lion', '', 0, 'QA==', 'f3vjqlv5', 1, 0, '', 2, 0, 0),(5, 3, 4, 3, 0, '82.225.50.160', 1135856969, 1, 0, 1, 1, 1, 1, '', 'DUB FACTORY RED LION SOUND meets IRATION STEPPAS 21/01/06', 'Salut à tous,\r\n\r\nUne grosse soirée Roots Dub &amp; Steppa en soutien au Festival du col des 1000 de l\'association L\'anamounto\r\n\r\nRED LION Sound  accueillent les géants de Leeds:\r\n\r\nIRATION STEPPAS pour une session 100% heavy weight bass....\r\n\r\nBeware!!!\r\n\r\nCa se passe le 21 Janvier à l\'ADAEP à Grenoble...Paf 10euro 22H&gt;&gt;5H\r\n+ d\'infos soon come,\r\nd\'ici là vous pouvez tjrs écouter des extraits de la soirée qui avait lieu à Chalon-s/Saone l\'année dernière:\r\n\r\n<!-- m --><a class=\"postlink\" href=\"http://dubnews.free.fr/iration/irationmix.html\">http://dubnews.free.fr/iration/irationmix.html</a><!-- m -->\r\n\r\na+steph\r\nLions\'Den', '', 0, 'QA==', '2vvambac', 1, 0, '', 3, 0, 0),(6, 2, 1, 5, 0, '172.206.42.240', 1135857292, 1, 0, 1, 1, 1, 1, '', '', 'Aller Hop au boulot !!!\r\n\r\nLion à raison, faut pas perdre espoir et surtout ne pas laisser tomber se forum sous pretexte qu\'il n\'y as plus d\'information, l\'information c\'est nous tous ! \r\n\r\nUnity Again !!! \r\n\r\nRespect To RedLion Crew\r\nBless\r\nBokson', '', 0, 'QA==', '185llc4j', 1, 0, '', 5, 0, 0),(7, 2, 1, 4, 0, '81.56.248.144', 1135857298, 1, 0, 1, 1, 1, 0, '', '', 'misère.... sans deconner......\r\nfaut croire que ça occupe certains de faire chier les autres sans aucun interet....\r\nbon.......\r\nfaudrait pas en plus s\'énerver ni gueuler contre ce hacker, ça risquerait de lui faire plaisir......\r\n\r\nvoilà, je suis réenregistré\r\n\r\nrespects,\r\nmathieu', '', 0, 'QA==', '3ra8xkgy', 1, 0, '', 4, 0, 0),(8, 4, 11, 5, 0, '172.206.42.240', 1135857735, 1, 0, 1, 1, 1, 1, '', 'Relation Amplificateur - Enceintes', 'Irie \r\n\r\nVu qu\'on s\'est fait hacker je repose ma question ! \r\nComment calculer cette histoire d\'impédance ! \r\nSi on bridge l\'ampli, si on l\'utilise en stereo etc... \r\nEt je repose la question, j\'ai 2 enceinte bass reflex 750watts sous 8ohms\r\nmon amplis derrière 2x700 watts sous 8ohms (par exemple) si je le bridge et que j\'arrive a sortir 1x1400 watts que je balance sur 2 caissons vu que je l\'ai bridger il passe en 4ohms mon amplis, donc il faut que les bafles le suporte dérrière mais malheureusement dnas les carastéristique des baffles, il ne suporte pas une impédance de mois 4.75 ohms \r\n\r\nCOmment je fait tu peux expliquet un peu plus lion, se que tu avait commencer (avant le passage du hackers furieux) \r\nEn plus tu me l\'a déja expliquer mais j\'ai un pue zapper des trucs !!!\r\n\r\nThanks\r\nBokson', '', 0, 'QA==', '3bec5jss', 1, 0, '', 5, 0, 0),(9, 5, 3, 5, 0, '172.206.42.240', 1135857870, 1, 0, 1, 1, 1, 1, '', 'Pk l\'homme détruit !', 'Tena y Stellin \r\n\r\nUne question me traverse l\'esprit, je ne peux y répondre seul je crois car trop vaste peut être la réponse ! \r\n\r\nPourquoi les hommes détruise, se que l\'autre à crée ? \r\n\r\nJalousie, frustrations .... Je sais pas j\'arive pas a comprendre.\r\n\r\nBokson', '', 0, 'QA==', '34xwhk4b', 1, 0, '', 5, 0, 0),(10, 2, 1, 6, 0, '82.64.69.118', 1135859358, 1, 0, 1, 1, 1, 1, '', '', 'Bon, on repars à Zéro, c\'est pas une si mauvaise chose <!-- s:) --><img src=\"{SMILIES_PATH}/icon_smile.gif\" alt=\":)\" title=\"Smile\" /><!-- s:) -->\r\n\r\nBig Up !!\r\n\r\n\r\nNao\r\nGuidance,,,,', '', 0, 'QA==', '143421z7', 1, 0, '', 6, 0, 0),(11, 2, 1, 7, 0, '212.147.0.191', 1135861490, 1, 0, 1, 1, 1, 0, '', '', 'Yes content de revoir le forum UP!  <!-- s:) --><img src=\"{SMILIES_PATH}/icon_smile.gif\" alt=\":)\" title=\"Smile\" /><!-- s:) --> \r\n\r\nLongue vie a ce forum très instructif ! \r\n\r\nEach one teach one !\r\n\r\nJ-M', '', 0, 'QA==', '3gohbqv1', 1, 0, '', 7, 0, 0),(12, 2, 1, 8, 0, '82.235.34.36', 1135864108, 1, 0, 1, 1, 1, 0, '', 'ça roule!!', 'Content de voir que vous avez vite resolu le problem!\r\nRespect a toute la bande...\r\na bientot\r\nmanu', '', 0, 'QA==', '3oql1d2j', 1, 0, '', 8, 0, 0),(13, 6, 4, 8, 0, '82.235.34.36', 1135865115, 1, 0, 1, 1, 1, 0, '', 'Dub Addict Sound meets Jr CONY &amp; SHANTI D. 3/02/06', 'Une semaine apres Red Lion et Iration, vous pouvez\r\nvous remettre une couche de bass au RAIL theatre à LYON..\r\non accueil JUNIOR CONY &amp; Shant D...\r\nBoudou et Roots massacre feront leur live, 19Dub a la selection\r\net Phil au chant.\r\nde 21h a 3 h pour 7Eureu\r\n\r\ntchao a tous...', '', 0, 'QA==', '1y0bfm7j', 1, 0, '', 8, 0, 0),(14, 7, 4, 9, 0, '83.156.49.183', 1135865763, 1, 0, 1, 1, 1, 1, '', 'BORDEAUX:Manasseh,Manutension,Iration Steppas &amp; Uzinadub', 'Le 4SANS a Bordeaux présente a partire de 22h 8) :\r\n\r\nLE 21 Janvier <!-- s:hola --><img src=\"{SMILIES_PATH}/fun_59.gif\" alt=\":hola\" title=\"hola\" /><!-- s:hola --> \r\n\r\nMANASSEH feat Brother Culture\r\nMANUTENSION feat MC Tablloyd\r\nCRYSTAL DISTORSION\r\n\r\npour 10euros\r\n\r\n\r\nLE 25 Fevrier <!-- s:hola --><img src=\"{SMILIES_PATH}/fun_59.gif\" alt=\":hola\" title=\"hola\" /><!-- s:hola --> \r\n\r\nIRATION STEPPAS\r\nUZINADUB\r\nGG PROJECT\r\nELISA DO BRASIL\r\n\r\nPour 10euros\r\n\r\nDonc 2 bonne soirées sur Bordeaux pour le début d année 2006 <!-- s:bravo --><img src=\"{SMILIES_PATH}/bravoo.gif\" alt=\":bravo\" title=\"bravo\" /><!-- s:bravo -->', '', 0, 'QA==', '319buiqc', 1, 0, '', 9, 0, 0),(15, 6, 4, 3, 0, '82.225.50.160', 1135865811, 1, 0, 1, 1, 1, 1, '', '', 'et le lendemain  DUB FACTORY N°2 le samedi 4 fevrier de 21H&gt;&gt;5H\r\n\r\n[b:2d4j075e][color=red:2d4j075e]RED LION SOUND feat Sis ilie Meets JAH FREE Feat GARY JAMES[/b:2d4j075e][/color:2d4j075e]\r\n\r\nPaf 10euro\r\nStand Disques UK Dub\r\na+steph', '', 0, 'Qg==', '2d4j075e', 1, 0, '', 3, 0, 0),(16, 6, 4, 9, 0, '83.156.49.183', 1135865981, 1, 0, 1, 1, 1, 1, '', '', 'Sa gère cette soirée avec JAH FREE et RED LION!!!!!!!!!!!! <!-- s:wink: --><img src=\"{SMILIES_PATH}/icon_wink.gif\" alt=\":wink:\" title=\"Wink\" /><!-- s:wink: -->', '', 0, 'Qg==', 'sirogssh', 1, 0, '', 9, 0, 0),(17, 4, 11, 2, 0, '82.225.50.160', 1135866119, 1, 0, 1, 1, 1, 0, '', 'Série et parrallèle', 'Yes Bokson, on va régler cette histoire d?impédance :\r\n\r\nL?impédance étant la résistance (entre autre?) d?un circuit ou d?un composant, il faut te representer ton HP comme une résistance que l?on branche dans un circuit avec la sortie de l?amplis. C?est la totalité de la résistance de se circuit (avec une ou plusieurs résistance branchées entre elle) qui va déterminer la résistance SOUS LAQUELLE va fonctionnée ton amplis.\r\n\r\nPrenons l?exemple de ton amplis : \r\nCaractéristiques  techniques :\r\n750 watts sous 8ohms x 2 (2 canaux)\r\n1400 watts sous 8ohms x 1 (sortie bridgé)\r\n\r\nJe branche 1 HP de 750 watt sous 8 ohms sur un des 2 canaux (mode non bridgé) et tout va bien?\r\nJ?ajoute un 2e HP de 750/8. j?ai 2 solutions : \r\n\r\nSoit je branche le 2e HP sur le 2e canal de l?amplis et j?ai donc 2 HP de 750 W/ 8 Ohms branché sur 2 canaux de 700 W / 8 Ohms\r\n\r\nSoit je décide 	de mettre les 2 HP en série ou en parallèle :\r\n\r\n[b:1ms11ykd] En série :\nquand on branche plusieurs HP en série leur impédance Z d?additionnent[/b:1ms11ykd] ce qui donne : \r\n\r\n[b:1ms11ykd]Zt (sortie ampli) =  Z (hp1) + Z (hp2) + ?[/b:1ms11ykd]\r\n \r\nsoit pour notre exmple :\r\n8 Ohms +  8 Ohms =  16 Ohms \r\n\r\ndonc dans ce cas pour fonctionner correctement ton amplis devra etre capable de fournir 750W + 750W = 1500 W sous 16 Ohms sur un seul canal (si on branche les 2 HP en série et sur un seul canal de l?amplis)\r\n\r\n[b:1ms11ykd] En parralèle :\nquand on branche plusieurs HP en parralèle l?inverse de leur impedance s?additionnent [/b:1ms11ykd] ce qui donnent :\r\n\r\n[b:1ms11ykd]1/Zt = 1/Z (hp1) + 1/Z (hp2) + ?[/b:1ms11ykd]\r\n\r\nsoit dans notre exemple :\r\n1/8 + 1/8 = 2/8  donc Zt= 8/2=4 Ohms\r\n\r\ndonc dans ce cas pour fonctionner correctement ton amplis devra etre capable de fournir 750W + 750W = 1500 W sous 4 Ohms sur un seul canal \r\n(si on branche les 2 HP en parallèle et sur un seul canal de l?amplis)\r\n\r\n\r\nEt si [b:1ms11ykd]je decide de mettre 4 HP sur meme le canal (circuit)[/b:1ms11ykd] j?aurai :\r\n\r\n[b:1ms11ykd]Si tout les HP sont en série :\n\n8 Ohms +  8 Ohms + 8 Ohms +  8 Ohms = 32 Ohms[/b:1ms11ykd]\r\n\r\ndonc dans ce cas pour fonctionner correctement ton amplis devra etre capable de fournir 750W + 750W + 750W + 750W = 3000 W sous 32 Ohms sur un seul canal\r\n \r\n[b:1ms11ykd]Si tout les HP sont en parralèle :\n1/Zt= 1/8+1/8+1/8+1/8= 4/8 Zt=8/4=2 Ohms[/b:1ms11ykd]\r\n\r\ndonc dans ce cas pour fonctionner correctement ton amplis devra etre capable de fournir 750W + 750W + 750W + 750W = 3000 W sous 2 Ohms sur un seul canal\r\n\r\n[b:1ms11ykd]Si 2 x 2 HP couplé en serie sont montés en parralèle :\n1/Zt = 1/(8+8)+1/(8+8)=1/16+1/16= 2/16 Zt = 16/2=8 Ohms[/b:1ms11ykd]\r\n\r\ndonc dans ce cas pour fonctionner correctement ton amplis devra etre capable de fournir 750W + 750W + 750W + 750W = 3000 W sous 8 Ohms sur un seul canal\r\n\r\n[b:1ms11ykd]Pour 2 x 2 HP couplé en parrallèle sont montés en série :\nZt=(1/(1/8+1/8))+(1/(1/8+1/8)=1/(2/8)+1/(2/8)=4+4=8 Ohms[/b:1ms11ykd]\r\n\r\ndonc dans ce cas pour fonctionner correctement ton amplis devra etre capable de fournir 750W + 750W + 750W + 750W = 3000 W sous 8 Ohms sur un seul canal\r\n\r\nPour le cas ou tu as 6 HP je te laisse faire le calcul.\r\n\r\nAprès au niveau te ton amplis tu n\'as aucun réglage a faire (c\'est comment tu vas brancher tes enceintes entre elles qui va faire que ton amplis tournera sous tel ou tel impedance) tu as juste a vérifié dans les spécifications techniques quelles sont les impedances qu\'il peut supporter (et pas la meme occasion quelle puissance il peut délivrer sous chaque impedance)...\r\n\r\nRespect\r\nRed Lion', '', 0, 'QA==', '1ms11ykd', 1, 1136464838, '', 2, 1, 0),(18, 8, 4, 3, 0, '82.225.50.160', 1135866440, 1, 0, 1, 1, 1, 1, '', 'DUB FACTORY 2: RED LION SOUND Meets JAH FREE feat GARY JAMES', '[b:79akxjmn][size=150:79akxjmn]DUB FACTORY N°2 le samedi 4 fevrier de 21H&gt;&gt;5H[/size:79akxjmn][/b:79akxjmn]\r\n\r\n<!-- s:hola --><img src=\"{SMILIES_PATH}/fun_59.gif\" alt=\":hola\" title=\"hola\" /><!-- s:hola --> <!-- s:hola --><img src=\"{SMILIES_PATH}/fun_59.gif\" alt=\":hola\" title=\"hola\" /><!-- s:hola --> <!-- s:hola --><img src=\"{SMILIES_PATH}/fun_59.gif\" alt=\":hola\" title=\"hola\" /><!-- s:hola -->\r\n[b:79akxjmn][color=red:79akxjmn][size=167:79akxjmn]RED LION SOUND feat

...
...
2 个赞

我最近进行的一次 vBulletin 导入似乎导致不同帖子采用了不同的编码。我编写了一些代码,尝试了多种编码强制转换。

1 个赞