نقاط التوقف في تطبيقين يتشاركان نفس قاعدة التعليمات البرمجية باستخدام Xdebug

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

سؤال

لقد قمت بالإعداد Xdebug على مثيل Vagrant محلي يعمل بنظام Ubuntu.إنه يعمل كما هو متوقع ويمكنني إعداد نقاط التوقف في طلبي.

لدي سيناريو حيث يقدم التطبيق طلبًا إلى واجهة برمجة التطبيقات الداخلية.واجهة برمجة التطبيقات الداخلية موجودة على نفس الخادم ونفس قاعدة التعليمات البرمجية.

رسم توضيحي للشجرة

codebase/
  app/
    root
  api/
    root

التطبيق يمكن الوصول إليه كما https://local.myapplication.com ويمكن الوصول إلى واجهة برمجة التطبيقات محليًا باسم http://local.api.myapplication.com).

إذا قمت الآن بتعيين نقطة توقف في بعض التعليمات البرمجية لواجهة برمجة التطبيقات (API) ثم قم بزيارة https://local.myapplication.com/some/action/that/triggers/the/api/code يتم تشغيل نقطة التوقف فقط في حالة عدم تهيئة جلسة Xdebug للتطبيق الأول، أي عدم تعيين XDEBUG_SESSION_START معلمة الاستعلام.إذا تم تعيينها، فسيتم تجاهل نقطة التوقف الخاصة بي.

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

أنا استخدم النص السامي 3 مع البرنامج المساعد https://github.com/martomo/SublimeTextXdebug.إعدادات Xdebug الخاصة بي في php.ini نكون:

zend_extension="/usr/lib/php5/20090626/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host=192.168.3.1
xdebug.remote_port=9000
xdebug.remote_log="/tmp/php5-xdebug.log"

هل هذا قابل للإصلاح؟هي موضع تقدير أي إجابات / تعليقات!

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

المحلول

خيارين.إذا لم ينجح الأول (الأسهل) فإن الثاني سينجح بالتأكيد.

1 - ابدأ جلسة Xdebug جديدة لكل طلب http.

في ملف php.ini، قم بإضافة ما يلي إلى إعدادات xdebug الخاصة بك:

xdebug.remote_autostart = 1

يرى الوثائق هنا

2 - قم بتشغيل جلستي Xdebug في وقت واحد.

ستحتاج إلى وجود مثيلين منفصلين لمحرر النصوص/IDE الخاص بك الذي يستمع إلى xdebug - كل منهما على منفذ مختلف.يمكنك تعيين كلا المثيلين لتحرير نفس المشروع بينما تستمع خدمة xdebug الخاصة بهم على منافذ مختلفة.

على سبيل المثال:

  • "التطبيق" الخاص بك -> المنفذ 9000
  • "واجهة برمجة التطبيقات الداخلية" الخاصة بك -> المنفذ 9001

لجعل "واجهة برمجة التطبيقات الداخلية" الخاصة بك تقوم بتشغيل xdebug على المنفذ 9001، يمكنك ببساطة القيام بما يلي في بداية البرنامج النصي "واجهة برمجة التطبيقات الداخلية":

ini_set('xdebug.remote_port', '9001');

نصائح أخرى

يستخدم conditional breakpoints.يمكنك جعلها تعتمد على أي كود PHP.على سبيل المثالقم بتعيين ثابت لكل نقطة دخول وتحقق منه.أو تحقق من عنوان URL للطلب.

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