توقف تنفيذ البرنامج النصي php. تنفيذ البرنامج النصي في الخلفية في PHP بدون crontab. #واحد. مظاهرة للاستخدام
توقف التنفيذ نص PHPويخرج رسالة HTML منسقة.
التناظرية من القاعدة وظائف PHPموت(). الفرق هو أن wp_die () ينتج ملف صفحة HTMLأخطاء. يوصى باستخدام هذه الوظيفة عندما تحتاج إلى التوقف تمامًا وظيفة PHP. لا يوصى باستخدام هذه الوظيفة كثيرًا - حاول عدم إظهار الأخطاء للمستخدمين.
عائدات
لا يُرجع أي شيء ، لكنه يُنهي PHP.
إستعمال
wp_die ($ message، $ title، $ args) ؛ رسالة $ (مختلط)رسالة خطأ أو كائن فئة WP_Error كامل.تقصير: ""العنوان (سلسلة / مجموعة / رقم / كائن / منطقي)عنوان الخطأ. إذا كنت تستخدم كائن WP_Error ، فسيتم أخذ العنوان من $ data ["title"] ، ويمكن تغيير هذا المعامل مسبقًا بنفسك.
تقصير: ""$ أرجس (سلسلة / مجموعة)
الحجج المختلفة التي تتحكم في السلوك.
الافتراضي: لا
- اتجاه النص (خط)
اتجاه النص: ltr (من اليسار إلى اليمين) أو rtl (من اليمين إلى اليسار).
الافتراضي: "ltr"
استجابة (رقم)
رمز حالة HTTP. 500 - خطأ داخلي في الخادم. القائمة بأكملها.
الافتراضي: 500
رابط خلفي (منطقي)
ما إذا كان سيتم عرض رابط خلفي للصفحة السابقة أم لا.
الافتراضي: خطأ
أمثلة
#واحد. مظاهرة للاستخدام
باستخدام الدالة wp_die () ، لنرى ما هو موجود حاليًا في المتغير العام $ post:
Add_filter ("body_class"، "add_body_class_cb") ؛ الوظيفة add_body_class_cb (فئات $) (global $ post؛ wp_die ("
"var_export ($ post، true).""); }
# 2. تصميم قالب wp_die
إذا احتاج الموقع إلى تغيير تصميم هذه الكتلة ، فيمكنك استخدام خطاف wp_die_handler:
500) ؛ $ r = wp_parse_args ($ args ، $ الافتراضي) ؛ $ have_gettext = function_exists ("__") ؛ if (function_exists ("is_wp_error") && is_wp_error ($ message)) (if (فارغ ($ title)) ($ error_data = $ message-> get_error_data () ؛ if (is_array ($ error_data) && isset ($ error_data [" title "])) $ title = $ error_data [" title "]؛) $ errors = $ message-> get_error_messages ()؛ switch (count ($ errors)) (الحالة 0: $ message =" "؛ فاصل ؛ حالة 1 : $ message = "" ؛ فاصل ؛ افتراضي: $ message = "
- \ n \ t \ t
- ".انضم(" \ n \ t \ t
- "، أخطاء $)." \ n \ t
$ back_text
"؛) if (! did_action (" admin_head ")): if (! headers_sent ()) (status_header ($ r [" response "]) ؛ nocache_headers () ؛ header (" Content-Type: text / html؛ charset = utf-8 ") ؛) إذا (فارغ ($ title)) $ title = $ have_gettext؟ __ (" WordPress ›Error"): "WordPress› Error "؛ $ text_direction =" ltr "؛ if (isset ($ r [ "text_direction"]) && "rtl" == $ r ["text_direction"]) $ text_direction = "rtl"؛ elseif (function_exists ("is_rtl") && is_rtl ()) $ text_direction = "rtl"؛؟> >الرمز wp يموت: wp-include / function.php WP 5.2.2
$ args) ؛ ) elseif (is_int ($ title)) ($ args = array ("response" => $ title) ؛ $ title = "" ؛) if (wp_doing_ajax ()) (/ ** * يقوم بفلترة رد الاتصال لقتل تنفيذ WordPress لـ طلبات Ajax. * *since 3.4.0 * *param قابلة للاستدعاء $ function اسم وظيفة رد الاتصال. * / $ function = application_filters ("wp_die_ajax_handler"، "_ajax_wp_die_handler")؛) elseif (wp_is_json_request ()) (/ ** * عوامل التصفية رد الاتصال لقتل تنفيذ WordPress لطلبات JSON. * *since 5.1.0 * *param يمكن استدعاءه $ function اسم وظيفة رد الاتصال. * / $ function = application_filters ("wp_die_json_handler"، "_json_wp_die_handler")؛) elseif (wp_is_jsonp_request () ) (/ ** * يقوم بتصفية رد الاتصال لقتل تنفيذ WordPress لطلبات JSONP. * *since 5.2.0 * *param يمكن استدعاء $ function اسم وظيفة رد الاتصال. * / $ function = application_filters ("wp_die_jsonp_handler"، "_jsonp_wp_die_handler") ؛) elseif (المعرفة ("XMLRPC_REQUEST") && XMLRPC_REQUEST) (/ ** * يقوم بتصفية رد الاتصال لقتل تنفيذ WordPress n لطلبات XML-RPC. * *since 3.4.0 * *param للاستدعاء $ function callback function name. * / $ function = apply_filters ("wp_die_xmlrpc_handler"، "_xmlrpc_wp_die_handler") ؛ ) elseif (wp_is_xml_request () || isset ($ wp_query) && (function_exists ("is_feed") && is_feed () || function_exists ("is_comment_feed") && is_comment_feed () || function_exists ("is_trackback") () || function_trackback ("is_trackback") && ) (/ ** * لتصفية رد الاتصال لقتل تنفيذ WordPress لطلبات XML. * *since 5.2.0 * *param callable $ function اسم وظيفة رد الاتصال. * / $ function = application_filters ("wp_die_xml_handler"، "_xml_wp_die_handler") ؛) else (/ ** * يقوم بتصفية رد الاتصال لقتل تنفيذ WordPress لجميع الطلبات بخلاف Ajax و non-JSON و non-XML. * *since 3.0.0 * *param callable $ function callback name. * / $ function = application_filters ("wp_die_handler"، "_default_wp_die_handler")؛) call_user_func ($ function، $ message، $ title، $ args)؛ )قبل 8 سنوات
إذا كنت ترغب في تجنب استدعاء exit () في FastCGI وفقًا للتعليقات أدناه ، ولكن في الحقيقة ، تريد بشكل إيجابي الخروج تمامًا من استدعاء الوظيفة المتداخلة أو تضمينها ، ففكر في القيام بذلك بطريقة Python:
عرّف استثناء باسم SystemExit ، وألقه بدلاً من استدعاء exit () وألحقه في index.php بمعالج فارغ لإنهاء تنفيذ البرنامج النصي بشكل نظيف.
// ملف: index.php
تمدد فئة SystemExit الاستثناء ()
محاولة(
/ * كود الكود * /
}
catch (SystemExit $ e) (/ * لا تفعل شيئًا * /)
// نهاية الملف: index.php
// بعض الوظائف المتداخلة بشدة أو ملف .php
إذا (SOME_EXIT_CONDITION)
رمي SystemExit () الجديد ؛ // بدلاً من الخروج ()
?>
منذ 10 سنوات
اقترح Jbezorg at gmail ما يلي:
header ("الموقع: /") ؛
?>
بعد إرسال "الموقع:" PHP header _will_ تابع التحليل ، وسيستمر تنفيذ جميع التعليمات البرمجية الموجودة أسفل استدعاء header (). لذا استخدم بدلاً من ذلك:
إذا ($ _ SERVER ["SCRIPT_FILENAME"] == __FILE__)
{
header ("الموقع: /") ؛
خروج؛
}
?>
منذ 10 سنوات
To rich dot lovely at klikzltd dot co dot uk:
استخدام "@" قبل header () لمنع الخطأ ، والاعتماد على خطأ "العناوين المرسلة بالفعل" يبدو لي فكرة سيئة للغاية أثناء إنشاء أي موقع ويب جاد.
هذه * ليست * طريقة نظيفة لمنع استدعاء ملف بشكل مباشر. على الأقل هذه ليست طريقة آمنة ، لأنك تعتمد على وجود استثناء أرسله المحلل اللغوي في وقت التشغيل.
أوصي باستخدام طريقة أكثر شيوعًا مثل تحديد ثابت أو تعيين متغير بأي قيمة ، والتحقق من وجوده في البرنامج النصي المضمن ، مثل:
في index.php:
تعريف ("INDEX" ، صحيح) ؛
?>
في ملفك المضمن:
إذا (! المعرفة ("INDEX")) (
موت( "لا يمكنك استدعاء هذا البرنامج النصي مباشرة!");
}
?>
ب.
منذ 4 سنوات
ملاحظة جانبية لاستخدام الخروج مع أخيرًا: إذا خرجت من مكان ما في كتلة المحاولة ، فلن يتم تنفيذ الأمر في النهاية. قد لا يبدو واضحًا: على سبيل المثال في Java ، لا تصدر خروجًا أبدًا ، على الأقل إرجاع في وحدة تحكم ؛ في PHP بدلاً من ذلك ، قد تجد نفسك تخرج من طريقة تحكم (على سبيل المثال في حالة إصدار إعادة توجيه).
هنا يتبع POC:
صدى "الاختبار أخيرا مع الخروج \ n" ؛
محاولة(
صدى "في محاولة ، الخروج \ n" ؛
خروج؛
) catch (استثناء $ e) (
صدى "اصطياد \ n" ؛
) أخيرا (
صدى "أخيرا \ n" ؛
}
صدى "في النهاية \ n" ؛
?>
هذا سوف يطبع:
اختبار خفة دم الخروج أخيرا
في محاولة الخروج
منذ سنة 1
>> سيتم دائمًا تنفيذ وظائف إيقاف التشغيل وأدوات تدمير الكائنات حتى إذا تم استدعاء الإنهاء.
إنه خطأ إذا طلبت الخروج إلى جهاز إلغاء الهيكلة.
الخروج العادي:
فئة أ
{
{
صدى "وداعا أ \ n" ؛
}
}
الصف ب
{
وظيفة عامة __destruct ()
{
صدى "وداعا ب \ n" ؛
}
}
$ a = جديد A ؛
دولار ب = ب جديد ؛
خروج؛
//انتاج:
// وداعا ب
// وداعا أ
?>
// الخروج إلى المدمر:
فئة أ
{
وظيفة عامة __destruct ()
{
صدى "وداعا أ \ n" ؛
}
}
الصف ب
{
وظيفة عامة __destruct ()
{
صدى "وداعا ب \ n" ؛
خروج؛
}
}
$ a = جديد A ؛
دولار ب = ب جديد ؛
//انتاج:
// وداعا ب
?>
قبل 17 عاما
إذا كنت تستخدم قوالب مع العديد من التضمينات ، فإن الخروج () سينهي البرنامج النصي الخاص بك ولن يكتمل القالب الخاص بك (لا,