واجهة رسومية لبيانات ملفات تعريف XHProf التي يمكنها تخزين النتائج في قاعدة بيانات MongoDB أو PDO.
يتم إنشاء ملف تعريف للتطبيق ويتم نقل بيانات ملفات التعريف إلى XHGui، الذي يأخذ تلك المعلومات ويحفظها في MongoDB (أو قاعدة بيانات PDO)، ويوفر واجهة مستخدم رسومية مناسبة للعمل معها.
هذا المشروع هو واجهة المستخدم الرسومية لعرض نتائج ملفات التعريف، ولإنشاء ملف تعريف للتطبيق الخاص بك، استخدم مكتبة صغيرة محددة:
لدى XHGui المتطلبات التالية:
إذا كنت بحاجة إلى تحديد الواجهة الخلفية التي تريد استخدامها، فيمكنك التحقق من مصفوفة التوافق حول الميزات التي تم تنفيذها أو المفقودة لكل واجهة خلفية.
يستخدم التثبيت الافتراضي قاعدة بيانات MongoDB. تتحدث معظم الوثائق عن MongoDB.
pecl install mongodb
XHGui الإصدار 1.3.0 أو إصدار أحدث.أي من برامج التشغيل وقاعدة البيانات المصاحبة لها:
ملاحظة: قد لا تدعم شركة PDO كافة ميزات XHGui، راجع رقم 320.
استنساخ أو تنزيل xhgui
من GitHub.
قم بتوجيه خادم الويب الخاص بك إلى دليل webroot
.
قم بتعيين الأذونات على دليل cache
للسماح لخادم الويب بإنشاء الملفات. إذا كنت كسولًا، فسيعمل 0777
.
يقوم الأمر التالي بتغيير أذونات دليل cache
المؤقت:
chmod -R 0777 cache
ابدأ مثيل MongoDB. يستخدم XHGui مثيل MongoDB لتخزين بيانات ملفات التعريف.
إذا كان إعداد MongoDB الخاص بك يستخدم المصادقة، أو لا يعمل على المنفذ الافتراضي والمضيف المحلي، فقم بتحديث config/config.php
الخاص بـ XHGui حتى يتمكن XHGui من الاتصال بمثيل mongod
الخاص بك.
( اختياري ، لكن موصى به) قم بإضافة فهارس إلى MongoDB لتحسين الأداء.
يقوم XHGui بتخزين معلومات ملفات التعريف في مجموعة results
في قاعدة بيانات xhprof
في MongoDB. تؤدي إضافة الفهارس إلى تحسين الأداء، مما يتيح لك التنقل بين الصفحات بسرعة أكبر.
لإضافة فهرس، افتح mongo
Shell من موجه الأوامر الخاص بك. بعد ذلك، استخدم طريقة db.collection.ensureIndex()
الخاصة بـ MongoDB لإضافة الفهارس، كما في ما يلي:
$ mongo
> use xhprof
> db.results.ensureIndex( { 'meta.SERVER.REQUEST_TIME' : -1 } )
> db.results.ensureIndex( { 'profile.main().wt' : -1 } )
> db.results.ensureIndex( { 'profile.main().mu' : -1 } )
> db.results.ensureIndex( { 'profile.main().cpu' : -1 } )
> db.results.ensureIndex( { 'meta.url' : 1 } )
> db.results.ensureIndex( { 'meta.simple_url' : 1 } )
> db.results.ensureIndex( { 'meta.SERVER.SERVER_NAME' : 1 } )
تثبيت التبعيات مع الملحن
composer install --no-dev
قم بإعداد خادم الويب الخاص بك. يصف قسم التكوين أدناه كيفية إعداد قواعد إعادة الكتابة لكل من nginx وApache.
يستخدم هذا الإعداد إنشاء عامل الإرساء لتنسيق حاويات الإرساء.
استنساخ أو تنزيل xhgui
من GitHub.
بدء تشغيل الحاويات: docker-compose up -d
افتح متصفحك على http://xhgui.127.0.0.1.xip.io:8142 أو فقط http://localhost:8142 أو اكتب في Terminal composer open
لتخصيص xhgui، انسخ config/config.default.php
إلى config/config.php
وقم بتحرير هذا الملف.
لتخصيص docker-compose، انسخ docker-compose.yml
إلى docker-compose.override.yml
وقم بتحرير هذا الملف.
يفضل XHGui تمكين إعادة كتابة عنوان URL، ولكنه سيعمل بدونه. بالنسبة إلى Apache، يمكنك القيام بما يلي لتمكين إعادة كتابة عنوان URL:
تأكد من السماح بتجاوز .htaccess وأنAllowOverride لديه التوجيه FileInfo الذي تم تعيينه لـ DocumentRoot الصحيح.
مثال لتكوين Apache 2.4:
< Directory /var/www/xhgui/>
Options Indexes FollowSymLinks
AllowOverride FileInfo
Require all granted
</ Directory >
تأكد من تحميل mod_rewrite بشكل صحيح. يجب أن ترى شيئًا مثل:
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
يأتي XHGui مزودًا بملف .htaccess
لتمكين قواعد إعادة الكتابة المتبقية.
بالنسبة إلى nginx وfast-cgi، يمكنك استخدام المقتطف التالي كبداية:
server {
listen 80 ;
server_name example.com;
# root directive should be global
root /var/www/example.com/public/xhgui/webroot/;
index index.php;
location / {
try_files $uri $uri / /index.php? $args ;
}
location ~ .php$ {
try_files $uri =404 ;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name ;
}
}
الطريقة المدعومة لملف تعريف التطبيق هي استخدام حزمة perftools/php-profiler.
يمكنك استخدام هذه الحزمة لجمع البيانات من تطبيق الويب الخاص بك أو برنامج نصي لـ CLI.
يتم بعد ذلك دفع هذه البيانات إلى قاعدة بيانات XHGui حيث يمكن عرضها باستخدام تطبيق XHGui.
توفر حزمة php-profiler
إرسال البيانات مباشرة إلى مثيل XHGui بمجرد اكتمال التوصيف في نهاية الطلب.
إذا لم يتمكن التطبيق من الاتصال مباشرة بمثيل XHGui، فإن الحزمة توفر حلاً لالتقاط بيانات ملفات التعريف إلى ملف يمكنك استيراده لاحقًا باستخدام البرنامج النصي للاستيراد.
تحذير : سيؤدي استيراد نفس الملف مرتين إلى إنشاء ملفات تعريف مكررة.
يمكن أن ينمو استخدام القرص بسرعة، خاصة عند إنشاء ملفات تعريف للتطبيقات ذات قواعد التعليمات البرمجية الكبيرة أو التي تستخدم أطر عمل أكبر.
للحفاظ على النمو تحت السيطرة، قم بتكوين MongoDB لحذف مستندات ملفات التعريف تلقائيًا بمجرد وصولها إلى عمر معين عن طريق إنشاء فهرس TTL.
حدد الحد الأقصى لعمر مستند الملف الشخصي بالثواني: قد ترغب في اختيار قيمة أقل في التطوير (حيث تقوم بملف تعريف كل شيء)، من الإنتاج (حيث تقوم فقط بملف تعريف مجموعة مختارة من المستندات). يوجه الأمر التالي Mongo إلى حذف المستندات التي مضى عليها أكثر من 5 أيام (432000 ثانية).
$ mongo
> use xhprof
> db.results.ensureIndex( { "meta.request_ts" : 1 }, { expireAfterSeconds : 432000 } )
الهدف من العرض الشلالي لـ XHGui هو إدراك أن الطلبات المتزامنة يمكن أن تؤثر على بعضها البعض. يمكن أن تصبح طلبات قاعدة البيانات المتزامنة والأنشطة التي تستهلك وحدة المعالجة المركزية وحتى تأمين ملفات الجلسة ذات صلة. مع تطبيق Ajax الثقيل، يكون فهم إنشاء الصفحة أكثر تعقيدًا بكثير من التحميل الفردي: نأمل أن يساعد الشلال. تذكر، إذا كنت تقوم فقط بتوصيف عينة من الطلبات، فإن الشلال يملأك بالأكاذيب غير المهذبة.
بعض الملاحظات:
request_ts_micro
جديدة، نظرًا لأن دقة المستوى الثاني لا تعمل بشكل جيد مع الشلالات. يتم عرض مقاييس Prometheus المناسبة لمراقبة صحة الخدمة على /metrics
. (يعمل هذا حاليًا فقط في حالة استخدام PDO للتخزين.)
ميزة | MongoDB | شركة تنمية نفط عمان |
---|---|---|
مصدر بروميثيوس | #305 | |
الباحث::الأحدث() | ||
الباحث::استعلام() | #384 | |
الباحث ::الحصول على () | ||
الباحث::getForUrl() | #436 | |
الباحث::getPercentileForUrl() | #436 | |
الباحث::getAvgsForUrl() | #384 | |
الباحث::getAll(فرز) | #436 | |
الباحث::getAll(الاتجاه) | #436 | |
الباحث::حذف() | ||
الباحث::اقتطاع() | ||
الباحث::saveWatch() | #435 | |
الباحث::getAllWatches() | #435 | |
الباحث::truncateWatches() | #435 | |
الباحث::احصائيات() | #305 | |
الباحث::getAllServerNames() | #460 |
راجع الإصدارات الخاصة بسجلات التغيير ومعلومات الإصدار.
حقوق الطبع والنشر (ج) 2013 لصالح مارك ستوري وبول راينهايمر
يُمنح الإذن مجانًا لأي شخص يحصل على نسخة من هذا البرنامج وملفات الوثائق المرتبطة به ("البرنامج")، للتعامل في البرنامج دون قيود، بما في ذلك، على سبيل المثال لا الحصر، حقوق الاستخدام والنسخ والتعديل والدمج. ونشر و/أو توزيع وترخيص من الباطن و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين تم توفير البرنامج لهم بالقيام بذلك، وفقًا للشروط التالية:
يجب تضمين إشعار حقوق الطبع والنشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الكبيرة من البرنامج.
يتم توفير البرنامج "كما هو"، دون أي ضمان من أي نوع، صريحًا أو ضمنيًا، بما في ذلك، على سبيل المثال لا الحصر، ضمانات القابلية للتسويق والملاءمة لغرض معين وعدم الانتهاك. لا يتحمل المؤلفون أو أصحاب حقوق الطبع والنشر بأي حال من الأحوال المسؤولية عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء في إجراء العقد أو الضرر أو غير ذلك، الناشئة عن أو خارج أو فيما يتعلق بالبرنامج أو الاستخدام أو المعاملات الأخرى في برمجة.