سؤال

أواجه مشكلة في المظهر ، وأنا متأكد من أن هناك طريقة أكثر ملاءمة/أبسط لتحقيق الحل ، ولكن جميع عمليات البحث ترمي في الفراغات في الوقت الحالي!

لدي MySQL DB يتم تحديثه بانتظام بواسطة PHP Page [عبر وظيفة cron] هذا يضيف أو يحذف الإدخالات حسب الاقتضاء.

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

لذلك كنت أفكر أنه قد يكون من الأفضل التحقق من إدخال واحد لكل مكالمة صفحة ، وتكرار من خلال الصفوف/الدخول مع كل مكالمة صفحة متتالية.

ما هي أفضل طريقة للقيام بذلك ، أي تتبع أي دخول/صف في الجدول يجب فحصه بعد ذلك؟

لدي فكرتان حول كيفية تنفيذ هذا:

1) يمكن حفظ معرف الصف الحالي إلى ملف على الخادم [بالتأكيد ليس أفضل طريقة

2) يتم إضافة حقل منطقي إضافي [Check] إلى الجدول ، ويتم تعيينه على True في الإدخال الأول وكاذب لجميع الآخرين. ثم في كل صفحة اتصل بها ؛ يتم العثور على "where check = true" يقوم بتحديث التحديث على هذا الصف ، "set check = false '' set [the the row rowe] check = true '

SI هذه أفضل طريقة للقيام بذلك ، أم أن أي شخص لديه أي شيء أفضل؟

شكرا لك مقدما !

ملاحظة: آسف على العنوان

لا يوجد حل صحيح

نصائح أخرى

لست متأكدًا مما إذا كان هذا حلًا جيدًا ، ولكن إذا اضطررت إلى إجراء تحديثات ضخمة ليلا ، فسوف أكتب التحديثات إلى جدول فارغ جديد ، ثم قم باختيار SQL للانضمام إلى الجداول وأخبرني أين تختلف ، ثم افعلها تحديث آخر SQL مثل

UPDATE table, temptable
SET table.col1=temptable.col1, table.col2=temptable.col2 ......
WHERE table.id = temptable.id;

يمكنك تخزين الطابع الزمني الذي يتم تحديث صف ضمنيًا باستخدام تحديث Current_Timestamp [http://dev.mysql.com/doc/refman/5.0/en/timestamp.html أو بشكل صريح في تحديث SQL الخاص بك. ثم كل ما عليك فعله هو تحديد الصف (الصفوف) مع أدنى طابع زمني (باستخدام الطلب والحد) ولديك الصف التالي للمعالجة. طالما أنك تأكد من تحديث الطابع الزمني في كل مرة.

على سبيل المثال ، قل أنك استخدمت الحقل last_polled_on timestamp لتخزين الوقت الذي قمت فيه بالاستطلاع في صف. يشبه إدراجك:

INSERT INTO table (..., last_polled_on) VALUES (..., NOW());

يبدو التحديث الخاص بك مثل:

UPDATE table SET ..., last_polled_on = NOW() WHERE ...;

ويشبه الاختيار الخاص بك للصف التالي للاستطلاع:

SELECT ... FROM table ORDER BY last_polled_on LIMIT 1;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top