هل يجب إغلاق اتصالات SQL المفتوحة باستخدام PDO في PHP؟

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

  •  20-08-2019
  •  | 
  •  

سؤال

عندما أقوم بفتح اتصال MySQL في PHP باستخدام وظائف MySQL المضمنة في PHP فقط، أفعل ما يلي:

$link = mysql_connect($servername, $username, $password);
mysql_select_db($dbname);
//queries etcetera
mysql_close($link);

عندما أقوم بفتح اتصال مع شركة تنمية نفط عمان، يبدو الأمر كما يلي:

$link = new PDO("mysql:dbname=$dbname;host=$servername",$username,$password);
//prepare statements, perform queries

هل يجب علي إغلاق الاتصال بشكل صريح كما أفعل مع mysql_connect() و mysql_close()؟إذا لم يكن الأمر كذلك، فكيف تعرف PHP عندما انتهيت من الاتصال؟

تيا.

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

المحلول

استخدم $link = null للسماح PDO أعلم أنه يمكن إغلاق الاتصال.

PHP

: PDO اتصالات وإدارة اتصال

<اقتباس فقرة>   

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

نصائح أخرى

ولا تقدم شركة تنمية نفط عُمان مثل هذه الوظيفة بمفردها.تتم إدارة الاتصالات عبر PDO بشكل غير مباشر عبر إعادة حساب كائنات PDO في PHP.

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

يمكنك إغلاق ماي اس كيو ال اتصال مع شركة تنمية نفط عمان عن طريق تشغيل استعلام SQL.كل مستخدم قادر على الاتصال بخادم MySQL قادر على ذلك KILL على الأقل الموضوع الخاص به:

/*
 * Close Mysql Connection (PDO)
 */

$pdo_mysql_close = function (PDO $connection) {

    $query = 'SHOW PROCESSLIST -- ' . uniqid('pdo_mysql_close ', 1);
    $list  = $connection->query($query)->fetchAll(PDO::FETCH_ASSOC);
    foreach ($list as $thread) {
        if ($thread['Info'] === $query) {
            return $connection->query('KILL ' . $thread['Id']);
        }
    }
    return false;
};

$pdo_mysql_close($conn);

وثائق Mysql ذات الصلة:

أسئلة Stackoverflow ذات الصلة:

عند انتهاء البرنامج النصي PHP المنفذة، يتم إغلاق كافة الاتصالات. أيضا لم يكن لديك لإغلاق صراحة الاتصال مع mysql_close().

ويمكنك أيضا تقييد اتصالات لفي الوظائف المحلية. وبهذه الطريقة يتم إغلاق الاتصال بمجرد الانتهاء من وظيفة.

ورؤية حسنا كما تم تعيين $link لشركة تنمية نفط عمان كائن، فإن PHP تعيين هذا لاغيا بمجرد تشغيل البرنامج النصي بحيث لم يعد كائن. لذلك هل يمكن أن مجرد القيام به:

$link = new PDO("mysql:dbname=$dbname;host=$servername",$username,$password);

//prepare statements, perform queries

$link = null;

http://uk3.php.net/pdo

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

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