الدالة ignore_user_abort()‎ في PHP

من موسوعة حسوب
< PHP

(PHP 4, PHP 5, PHP 7)

تُحَدِّدُ الدالةُ ignore_user_abort()‎ ما إذا كان انقطاع اتصال العميل سيؤدي إلى إحباط تنفيذ البرنامج.

الوصف

int ignore_user_abort ([ bool $value ] )

تُحَدِّدُ الدالةُ ignore_user_abort()‎ ما إذا كان انقطاع اتصال العميل سيؤدي إلى إحباط تنفيذ البرنامج.

عند تشغيل PHP كسكربت في سطر الأوامر، وأُغْلِقَتْ الطرفية دون إنهاء تشغيل السكربت، سينتهي تنفيذ البرنامج في المرة القادمة التي يحاول فيها كتابة أي شيء، ما لم تُضبَط قيمة المعامل value إلى القيمة TRUE.

المعاملات

value

إذا ضُبِطَ المعامل value، فستضبِط الدالةُ ignore_user_abort()‎ قيمة خيار الضبط ini ignore_user_abort إلى قيمة المعامل المحددة. أما إذا لم تُضبَط قيمة value، فستعيد الدالةُ ignore_user_abort()‎ خيار الضبط السابق دون تغييره.

القيم المعادة

تعيدُ الدالةُ ignore_user_abort()‎ خيار الضبط السابق، كعدد صحيح.

أمثلة

المثال 1: مثال على الدالة ignore_user_abort()

<?php
// تجاهل تَوَقُّف العميل واسمح للبرنامج بالعمل دائمًا
ignore_user_abort(true);
set_time_limit(0);
echo 'Testing connection handling in PHP';
// حلقة تكرار غير منتهية، التي تمكّن المستخدم من النقر على زر إيقاف تحميل الصفحة.
while(1)
{
  // هل فشل الاتصال؟
 if(connection_status() != CONNECTION_NORMAL)
 {
   break;
 }
 // أوقف البرنامج لمدة 10 ثوانٍ
 sleep(10);
}
//إذا تحقق ذلك، تُشَغَّلُ جملة 'break' من داخل الحلقة التكرارية while. لذلك يمكننا هنا تسجيل الدخول، أو تنفيذ أي مهام أخرى نحتاجها دون الاعتماد فعليًا على المتصفح.
?>

ملاحظات

لن تكتشف PHP أن المستخدم قد أوقف الاتصال حتى تُجرَى محاولةٌ لإرسال معلومات إلى العميل. إن مجرد استخدام بنية echo لا يضمن أن تُرسَل المعلومات إلى العميل، انظرْ إلى توثيق الدالةَ flush()‎.

انظر أيضًا

  • الدالة connection_aborted()‎: فحص ما إذا كان العميل غير متصل.
  • الدالة connection_status()‎: إعادة bitfield لحالة الاتصال.
  • راجع صفحة «معالجة الاتصالات» للحصول على وصف كامل لمعالجة الاتصال في PHP.

مصادر