ترحيل منتدى phpBB3 إلى Discourse

يبدو أنني الوحيد الذي ينشر هنا…

لذا، في اللحظة التي كنت على وشك فيها إطلاق منتدى discourse الجديد، اكتشفنا مشكلة غريبة جدًا! لقد أربكتني هذه المشكلة، وآمل أن يتمكن أحدكم هنا من توضيحها لي…

الحالة: لقد استوردت قاعدتي بيانات إلى discourse من phpbb3. الأولى هي أرشيف، وهو في الأساس المنتدى الحالي الذي قُسم إلى جزأين قبل 15 عامًا ثم تم تجميده. أما النصف الآخر من المنتدى فقد ظل نشطًا ونما. كان أملي في أن يقوم أداة الاستيراد بدمجهما أثناء الاستيراد، وهو ما حدث! :smiley:

لكنني اكتشفت الآن حالة مستخدم واحد، وأحتاج إلى معرفة ما إذا كانت هذه الحالة الوحيدة، أم أنها أثرت على آخرين، وكيف يمكنني البحث عن حالات أخرى.

كان المستخدم قد أنشأ حسابين. كلاهما في المنتدى الحالي. لنفترض أن الحساب القديم كان يُسمى OldName والحساب الجديد NewName.

في discourse المستورد، يوجد الآن مستخدمان. أحدهما يُسمى OldName، والحساب الذي كان من المفترض أن يكون NewName أُعيد تسميته إلى OldName1. أيضًا، تم دمج منشورات OldName في OldName1.

لا أعرف لماذا حدث هذا فقط مع هذا المستخدم، حيث يوجد مستخدمون آخرون بحسابات مزدوجة ولا يبدو أنهم تأثروا بهذا.

هل يعرف أحد ما الذي قد يكون حدث هنا؟
هل توجد طريقة للبحث عن حالات أخرى؟

إعجاب واحد (1)

ولكن ربما ليس بالطريقة التي تتخيلها. إذا قمت بتشغيل برنامج الاستيراد مرتين فقط، فإن جميع حقول import_id المخصصة تتعارض، بحيث أصبح المستخدم الذي يحمل معرف المستخدم 123 في قاعدة البيانات الأولى هو نفسه المستخدم الذي يحمل معرف المستخدم 123 في قاعدة البيانات الجديدة. وينطبق الشيء نفسه على المواضيع والمنشورات.

أنا متأكد إلى حد كبير من أن كل معرف مستخدم (والمواضيع والمنشورات، وربما الفئات) الموجود في كل من قاعدة البيانات القديمة والجديدة يتم دمجه مع القديم.

ستحتاج إلى اتخاذ إجراء ما لضمان عدم تعارض معرفات الاستيراد (ربما بحذف القديمة، أو ربما بتعديل سكريبت الاستيراد لجعلها فريدة لكل عملية استيراد).

4 إعجابات

حسناً… إنهما في الواقع نفس الشيء أليس كذلك؟
أعني، إنه في الأساس نفس المنتدى، فقط جزء واحد استمر في التطور بينما بقي الجزء الآخر متجمداً في الزمن. إذن، هل معرف المستخدم 123 لا يزال معرف المستخدم 123، وكذلك معرفات المنشورات والمواضيع؟

ماذا تقصد بحقول مخصصة باسم import_id؟

المنتدى يبدو جيداً، جميع المواضيع والمنشورات وغيرها موجودة في مكانها. هل الفكرة العامة هي أنها مدمجة؟

لا أستطيع العثور على أي مشاكل أخرى تتعلق بمستخدمين أو منشورات أو مواضيع أخرى باستثناء حالة الاستخدام هذه؟

ربما يمكنني شرح الحالة بشكل أفضل.

البداية كانت منتدى phpBB واحداً. في مرحلة ما، قمت بنسخه. بقيت النسخة الأولى مغلقة وأصبحت الأرشيف. أما الجزء الآخر، فقد حذفت أقدم المنشورات (التي أصبحت الآن في الأرشيف) وبقي مفتوحاً. في هذا الجزء، زاد عدد المستخدمين والمواضيع والمنشورات وما إلى ذلك دون أي تغيير من حيث المعرفات (ID-wise). لذا، ظننت أن سكريبت الاستيراد سيرى الأرشيف والمنتدى الحالي كجزئين من قاعدة بيانات واحدة، لأنهما فعلاً كذلك… ويعاملهما كاستيراد تدريجي. وهذا ما حدث؟

لذا، من فضلك ساعدني الآن على فهم ما الذي ذهب خطأً في نظرك، لأن ما تشير إليه هو بالضبط ما أردت أن يفعله السكريبت…

إذا كان المنتدى الثاني مجموعة شاملة للمنتدى الأول، فلا أرى سببًا لاستيراد كليهما، ولكن طالما أن المنتدى الجديد لا يستخدم أيًا من معرفات المستخدمين أو المنشورات أو المواضيع نفسها المستخدمة في المنتدى الأول، فستكون الأمور على ما يرام.

عند استيراد مستخدم أو موضوع أو منشور، يتم إنشاء حقل مخصص من نوع XxxCustomField باسم “import_id” لتمكينك من تتبع التوافق بين المنتدى القديم والمنتدى الجديد.

قد ينشئ بعض أدوات الاستيراد أيضًا حقلًا مخصصًا باسم import_username في حال تغير اسم المستخدم. يمكنك القيام بشيء مثل:

cd /var/discourse
rails c
u=User.find_by_username('اسم-المستخدم-المرغوب')
u.custom_fields

لعرض هذه الحقول.

إعجاب واحد (1)

لأنني أردت دمج الأرشيف مرة أخرى في المنتدى بأكمله، بدلًا من امتلاك “نصفين” منفصلين لمنتدى واحد. الآن لم يعد عليّ صيانة أرشيف phpbb2 قديم منفصل كان عليّ تحويله إلى Discourse بطريقة أو بأخرى… الآن أصبح بأكمله مرة أخرى :slight_smile: (قمنا بإنشاء الأرشيف في ذلك الوقت في محاولة لتقليل الحمل على الخادم).

جربت استعلامك، شكرًا لك،
في حالة الاستخدام المذكورة في منشوري، حصلت على {"import_id"=>"21293"} لـ NewName
أما بالنسبة لـ OldName1، فقد أعطاني
{"import_id"=>"8800", "import_username"=>"OldName"}
إذن، مذهل، يظهر ما تم فعله هناك… هل هناك أي سبب يجعله يقرر أن import_id8800 تنتمي إلى اسم مستخدم الاستيراد NewName؟ بما أن لهما معرفات استيراد مختلفة.

هل توجد طريقة لإجراء بحث أكثر عمومية لأنني لا أعرف أي المستخدمين يتأثرون، وهذا ما أحاول معرفته، لذا لا أعرف جزء 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 منشور. لأغراض الترحيل، أستخدم مستودع Git الخاص بـ @gerhard مع فرع phpbb3.

عملية ترحيل المستخدمين والرسائل الخاصة (PNs) تسير بشكل جيد. لكنني أواجه مشكلة مع المنشورات. تم ترحيل حوالي 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)

أحيانًا تتسلل بعض الشياطين الصغيرة إلى الكود أو تظهر عفاريت في قاعدة البيانات.

إذا توقف الترحيل بسبب خطأ (وهو ما يبدو أنه يحدث في هذه الحالة)، فإن ما أفعله هو النظر إلى رسالة الخطأ والذهاب إلى الملف المخالف في السكربت، ثم تغليف الخطأ في هيكل بسيط كالتالي:

begin
   # строка أو الأسطر المخالفة من كود Ruby
rescue
   puts "خطأ! في <الروتين المخالف> المتغير #{variable} blah blah رسالتي الرائعة"
end

لقد قمت مؤخرًا بترحيل أكثر من مليون منشور، وكان التقاط الأخطاء مثل المثال أعلاه و"المضي قدمًا" منقذًا للحياة.

كل عملية ترحيل تختلف عن الأخرى، ليس لأنني أملك خبرة كبيرة مثل الآخرين، بل لأنني قمت بذلك بطرق مختلفة حوالي 20 مرة وفي 100 مناسبة مختلفة، هههه، وتجربتي تقول إن هيكل begin rescue end مهم جدًا.

بالتأكيد، يمكنك الغوص أعمق لمعرفة ما إذا كانت هناك مشكلة أكبر لاحقًا؛ ولكن أحيانًا تريد فقط الاستمرار في العمل والمضي قدمًا في الترحيل :slight_smile:

إعجابَين (2)

مرحبًا @TBauer :wave:

ربما أغفلت هذا التحذير في المنشور الأول.

إعجابَين (2)

@TBauer يبدو أنه يستخدم هذا الفرع التجريبي، لذا أعتقد أن هذا مقبول. إنه لا يزال غير مدعوم، لكنني أود معرفة ما يسبب هذه الخطأ على أي حال.

@TBauer هل يمكنك إرسال لي محتوى عمود post_text في جدول phpbb_posts للمنشور ذي المعرف 14742 عبر رسالة خاصة أو نشره هنا؟

أظن أنك قمت مؤخرًا بالترقية إلى phpBB 3.2 ولم يكتمل بعد تحويل تنسيق BBCode القديم إلى الجديد. وهذا هو السبب في أنه قد يفشل بعد 2800 منشور. إذا كان الأمر كذلك، فقد ترغب في تشغيل مُعيد تحليل النص phpBB 3.2+ عبر سطر الأوامر (CLI). فبرنامج الاستيراد لا يدعم حاليًا دمج تنسيقات التخزين القديمة والجديدة لـ BBCodes، كما أن تحويل BBCode إلى Markdown سيعمل بشكل أفضل بكثير مع التنسيق الجديد. :wink:

4 إعجابات

لا، لا يتوقف الترحيل. يعمل السكربت حتى ينتهي بشكل طبيعي. فقط لا يتم ترحيل العديد من المنشورات. في هذه الحالة، حصلت على رسائل مثل المذكورة أعلاه. لقد راجعت بعض المنشورات في قاعدة البيانات، ويبدو أن هذه المنشورات قديمة جميعها ولا تحتوي على كود XML.

@Helmi: بالطبع قرأت هذا. وهذا هو السبب في أنني استخدمت الفرع التجريبي من الكود. :wink:

إعجاب واحد (1)

ربما تكون هذه هي الحل. سأجرب هذا أولاً. أدركت أن المنشورات التي فشلت هي بتنسيق BBCode وليست بتنسيق XML… لذا، سأحاول التحويل مرة أخرى بعد إعادة التحليل…

إعجابَين (2)

آسف، لم يكن هذا واضحًا تمامًا بالنسبة لي عند قراءة منشورك.

@Helmi: لا مشكلة. :smiley:

@gerhard: لقد نجح الأمر! بعد تحويل المنشورات إلى التنسيق الجديد، تمكنت من استيرادها. حصلت فقط على استثناء أثناء استيراد أربع منشورات، لكن في حالتي هذا مقبول.

   35264 / 35281 (100.0%)  [4879 items/min]  Exception while creating post 39353. Skipping.
unknown attribute 'reply_id' for PostReply.
/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 قديم جدًا يحتاج إلى حفظ من الحذف. تسير الأمور بشكل جيد إلى حد كبير، لكن في النهاية يواجه المنتدى مشاكل في الترميز. حيث تظهر العناوين ومحتوى المنشورات بترميز غير صحيح.

كان المنتدى باللغة الفرنسية، وتحميل قاعدة البيانات SQL الذي قمنا بتنزيله من phpBB مشفر بترميز UTF-8، فما الذي فاتنا؟

شكرًا جزيلاً، هذا العمل رائع! :open_mouth:

من الممكن أن يكون هناك عدم تطابق في الترميز في مكان ما… هناك سبب لسمّية أحد الأشخاص هذا الجحيم (MySQL encoding hell) (MySQL encoding hell: How to export UTF-8 data from a latin1 table | Whitesmith).

منذ فترة طويلة، قمت بإنشاء سكربت لإصلاح قواعد البيانات التي تحتوي على بيانات UTF-8 داخل جداول ذات ترميز latin1. ربما يساعدك ذلك؟ وإلا فستحتاج إلى حل هذه المشكلة بنفسك.

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)