سؤال

لدي مشكلة مع اتصال MySQL.

لديّ برنامج نصي PHP يقوم بتحميل الصورة ، هذا البرنامج النصي يفعل ذلك:


1) mysql connection
2) check user rights for uploading photo (I use a sql query for this)
3) Image processing
4) sql query for insering photo data in database
لقد قمت بتعيين مهلة اتصال MySQL إلى 5 ثوان.

كل شيء يعمل بشكل رائع إذا كان وقت معالجة الصور أقل من 5s (مهلة اتصال MySQL) وإلا فقد حصلت على خطأ عند تنفيذ الخطوة 4) ، فإن الخطأ هو "خادم MySQL قد انتهى".

لذلك ، راجعت ما إذا كان اتصال MySQL لا يزال على قيد الحياة بعد معالجة الصور وتوفي اتصال MySQL إذا كان وقت معالجة الصورة أكثر من 5s.

أضفت هذا الرمز بعد معالجة الصور (الخطوة 3)


if(!mysql_ping($conn)){
$conn = mysql_connect('localhost', 'mysqluser', 'mypass');
$db   = mysql_select_db('mydb',$conn);
}

لكنه لا يعمل! هذه مشكلتي الحقيقية.

var_dump($conn)
إعطاء رابط mysql ressource لكن

mysql_select_db('mydb',$conn)
العودة كاذبة ، و
mysql_error()
إرجاع "خادم MySQL قد ذهب بعيدا"

هل بإمكان أحد ما مساعدتي؟

شكرا مقدما.

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

المحلول

اقتباس من http://dev.mysql.com/doc/refman/5.0/en/gone-away.html:

السبب الأكثر شيوعًا لخادم MySQL قد اختفى هو أن الخادم قد تم توقيته وأغلق الاتصال.
[...]
بعض الأسباب الشائعة الأخرى لخادم MySQL قد تخطئت هي:
* أنت (أو مسؤول DB) قد قتلت خيط الجري ببيان القتل أو قيادة MySqLadmin Kill.
* حاولت تشغيل استعلام بعد إغلاق الاتصال بالخادم. يشير هذا إلى وجود خطأ منطقي في التطبيق الذي يجب تصحيحه.
* لا يحتوي تطبيق العميل الذي يعمل على مضيف مختلف على الامتيازات اللازمة للاتصال بخادم MySQL من هذا المضيف.
* حصلت على مهلة من اتصال TCP/IP على جانب العميل. قد يحدث هذا إذا كنت تستخدم الأوامر: mysql_options (... ، mysql_opt_read_timeout ، ...) أو mysql_options (... ، mysql_opt_write_timeout ، ...). في هذه الحالة ، قد تساعد زيادة المهلة في حل المشكلة.
* لقد واجهت مهلة على جانب الخادم ويتم تعطيل إعادة الاتصال التلقائي في العميل (علامة إعادة الاتصال في بنية MySQL تساوي 0).
* أنت تستخدم عميل Windows وكان الخادم قد أسقط الاتصال (ربما لأن Wait_timeout انتهت صلاحيته) قبل إصدار الأمر.

إلخ.

نصائح أخرى

حاول أولاً زيادة المهلة ، ثم أغلق الاتصال بعد الخطوة 4

mysql_close()

لماذا تزيد المهلة؟ لأن معالجة الصور تستغرق بالتأكيد أكثر من 5 ثوانٍ ، لذلك تحدث هذه المشكلة!

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