سؤال

السيناريو

أنا أقوم ببناء تطبيق ويب حيث يمكن إنشاء التقارير على الطاير (بناء على المعلومات المستردة من قاعدة بيانات SQL). هذه التقارير سوف تحتوي على مخططات، والتي يمكن أيضا إنشاءها على الطاير. نظرا لأن هذه المخططات تحتوي على معلومات حساسة، باستخدام API للحزب الثالث (IE: Google Charts) خارج السؤال.

المشكلة

أنا أستخدم امتداد GD الخاص ب PHP لإنشاء هذه المخططات. انها بطيئة جدا. التخزين المؤقت هو الطريق للذهاب، لكن المشكلة موجودة هناك عددا كبيرا من المخططات المحتملة؛ على الرغم من أنني أعتقد أن غالبية المخططات المطلوبة ستكون تلك التي تم إنشاؤها من قبل.

الحل الجزئي

يتم إنشاء الرسوم البيانية

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

المشكلة مع هذا هو حدث تصادم. للدخول في ذلك، أفكر في توفير التجزئة وشكل متسلسل من البيانات في جدول SQL. ثم إذا كان لدي مخبأ ضرب، سأظل مقارنة البيانات نفسها.

أنا أكثر من هندسة هذا؟ (إنه تجزئة 160 بت - Sha1)
هل هناك طريقة أفضل للتعامل مع هذا؟

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

المحلول

أنا أستخدم امتداد GD الخاص ب PHP لإنشاء هذه المخططات. انها بطيئة جدا.

أظن أنه ليس GD وهو الشيء البطيء. المرشح الأكثر احتمالا هو معالجة تجميع البيانات (من قاعدة بيانات؟). في هذه الحالة قد تحصل على فوائد كبيرة من تحسين مخطط قاعدة البيانات / أو استخدام البيانات الموحدة مسبقا.

على الرغم من أنك قد تفكر أيضا في التخزين المؤقت إخراج الاستعلام، إلا أنك ما لم تكن تستخدم نفس البيانات في مكان آخر، فمن المحتمل أن تكون أكثر بساطة لتخزين صور الرسم البياني.

المشكلة مع هذا هو حدث تصادم.

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

أود أن أوصي بإلقاء نظرة على jpgraph - وهو جزء ممتاز من البرامج ولديه مخزئة داخلية.

c.

نصائح أخرى

على الأرجح إذا كان طول بياناتك الفاشل أقل من 160 بت، فأنت آمن.خلاف ذلك، كما تقول، قد تحدث التصادمات ومقارنة البيانات ضرورية.

إلقاء نظرة على ChartDirector نحن نستخدمها في العمل ولا تعتمد عليهامكتبة GD، يجب أن تكون أسرع.

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