PHP unserialize تحافظ على إلقاء نفس الخطأ أكثر من 100 مرة

StackOverflow https://stackoverflow.com/questions/119234

  •  02-07-2019
  •  | 
  •  

سؤال

لدي مجموعة كبيرة 2d array أنني تسلسل base64_encode ورمي في قاعدة البيانات.على صفحة مختلفة سحبت مجموعة و عندما base64_decode تسلسل مجموعة أستطيع أن صدى ذلك يبدو بالتأكيد صحيحة.

ومع ذلك ، إذا كنت في محاولة unserialize(base64_decode($serializedArray)) ويلقي فقط نفس الخطأ إلى نقطة ما يقرب من تحطمها فايرفوكس.

الخطأ هو:

تحذير: unserialize() [function.unserialize]:العقدة لم يعد موجودا في /var/www/dev/wc_paul/inc/analyzerTester.php على خط 24

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

لا أحد لديه أي فكرة لماذا هذا قد يكون يحدث ؟

هل كانت مفيدة؟

المحلول

هل أنت متأكد من أنك فقط التسلسلية صفيف ، وليس كائن (مثلDOMNode?) مثل الموارد ليس كل الطبقات سوف تكون سعيدة مع كونه unserialized.كمثال مع DOM (وهو الخطأ يوحي لي أنك تعمل مع) كل عقدة لديه في إشارة إلى parentNode, وإذا كان parentNode لا توجد في الوقت الراهن عقدة يجري unserialized, انها ليست قادرة على إعادة المرجعية مشاكل تترتب على ذلك.

أود أن أقترح إنقاذ شجرة dom كما XML إلى قاعدة البيانات وتحميل مرة أخرى في وقت لاحق.

نصائح أخرى

تأكد من أن حقل قاعدة بيانات كبيرة بما يكفي لعقد تسلسل مجموعة.تسلسل البيانات جدا الفضاء غير فعالة في PHP العديد DBs (مثل الخلية) بصمت سيتم اقتطاع قيم الحقول التي هي فترة طويلة جدا.

ما هو نوع من العناصر في المصفوفة ؟ تسلسل/unserialize لا يعمل مع المدمج في PHP الكائنات و التي عادة ما يكون سبب هذا الخطأ.

وبناء أيضا على تعليقك هذا ليس مشكلة ، ولكن لتوفير مساحة في قاعدة البيانات الخاصة بك لا base64 في ترميز البيانات ، فقط الهروب.أيل mysql استخدام mysql_real_escape_string.

تأكد من أنك لا تسلسل الموارد لا يمكن تسلسل.

Resources@php.net

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top