ស្វែងយល់អំពី Symfony Profiler (វគ្គទី២)

នៅក្នុងអត្ថបទមុននេះ គឺយើងបាននិយាយអំពី Symfony Profiler រួចមកហើយ ប៉ុន្តែវាគ្រាន់តែជាមួយចំណែកតែប៉ុណ្ណោះ។ ចំពោះអត្ថបទមួយនេះវិញ គឺរៀបរាប់អំពី Symfony Profiler ដូចគ្នាដែលបន្តពីភាគមុន។ ដូចនេះយើងនឹងចាប់ផ្ដើមទាំងអស់គ្នា៖

២) របៀបប្រើប្រាស់ Matchers ដើម្បីបើក Profiler Conditionally

ក) ការប្រើប្រាស់ built-in Matcher

ការស្នើរនូវ matcher គឺជា class ដែលពិនិត្យនូវអ្វីដែលផ្ដល់អោយ Request ជំនួសអោយការផ្គូរផ្គងនូវគូនៃ លក្ខខណ្ឌ។ Symfony ផ្ដល់នូវ built-in matcher ដែលផ្គូរផ្គងទីតាំងនិង IPs។ ឧទាហរណ៏៖ ប្រសិនបើអ្នកចង់តែបង្ហាញនូវ profiler នៅពេលដែលធ្វើការ access នូវ page ជាមួយ IP 168.0.0.1 បន្ទាប់មកអ្នកអាចប្រើ configuration ខាងក្រោមនេះ៖

អ្នកក៏អាចកំណត់ path option ដើម្បីកំណត់នូវទីតាំងនៅលើ profiler ណាមួយដេលគួរតែបើក។ សម្រាប់ឧទាហរណ៏ សូមកំណត់វាទៅកាន់ ^/admin/ នឹងបើកនូវ profiler ចំពោះតែ URLs ដែលចាប់ផ្ដើមជាមួយ /admin/

ខ) ការបង្កើត Custom Matcher

ការបង្កើននូវ គំនិតនៃការស្នើរ Matcher អ្នកអាចកំណត់ custom matcher ដើម្បីបើកនូវ profiler conditionally ក្នុង application របស់អ្នក។ ដូចនេះ អ្នកត្រូវបង្កើត class ដែល implements RequestMatcherInterface ។ Interface មួយនេះទាមទារអោយ method មួយ matches()។ method នេះនឹងបញ្ជូនមកវិញនូវ false ពេលដែលការស្នើរ មិនត្រូវគ្នានឹង លក្ខខណ្ឌ ហើយបើមិនដូចនេះទេគឺ true។ ហេតុនេះហើយ custom matcher ត្រូវតែបញ្ជូនមកវិញនូវ false ដើម្បីបិទនូវ profiler និង true ដើម្បីបើកវា។

ឧបមាថា profiler មួយនោះត្រូវតែបើកនាពេលណាដែល user ជាមួយនឹង ROLE_SUPER_ADMIN គឺបាន logged in។ ខាងក្រោមនេះគឺជាកូដដែលត្រូវការសម្រាប់ custom matcher៖

បន្ទាប់មក ត្រូវធ្វើការ configure នូវ service ថ្មីនិងកំណត់វាជា private ព្រោះ application នឹងមិនប្រើវាជា direct នោះទេ៖

ពេលដែល service ត្រូវបានចុះឈ្មោះ រឿងតែមួយគត់ដែលត្រូវធ្វើគឺ configure នូវ profiler ដើម្បីប្រើ service មួយនេះជា matcher៖

 

៣) របៀប Access Profiling Data Programmatically

ភាគច្រើន profiler information គឺត្រូវបាន access និង វិភាគដោយប្រើប្រាស់ web-based visualizer របស់វា។ ទោះជាយ៉ាងណាក៏ដោយ អ្នកក៏អាចទទួលនូវ profiling information programmatically ទៅកាន់ method ដែលផ្ដល់ដោយ profiler service។

ពេលដែលឆ្លើយតបមកវិញនូវ object ដែល available នោះគឺប្រើប្រាស់ loadProfileFromResponse() method ដើម្បី access ទៅកាន់ associated profile របស់វា៖

ពេលដែល profiler រក្សាទុកនូវ ទិន្នន័យអំពីការស្នើរ វាក៏ត្រូវតែមានទំនាក់ទំនងនូវ token ជាមួយវា ហើយ token គឺ available នៅក្នុង X-Debug-Token HTTP header នៃ response។ ការប្រើប្រាស់ token អ្នកអាច access ទៅកាន់ profile នៃ response ពីមុនដែលមាននៅ loadProfile() method៖

profiler service ក៏ផ្ដល់នូវ find() method ដើម្បីមើលទៅលើ token ដោយផ្អែកទៅលើ criteria មួយចំនួន៖

 

៤) ការ Switch នូវ Profiler Storage

នៅក្នុង Symfony ដែលមាន version ពីមុនទៅដល់ 3.0 គឺ profiles អាចនឹងរក្សាទុកបានក្នុង files, databases, services ដូចជា Redis និង Memcache ។ល។ ចាប់ផ្ដើមពី Symfony 3.0 គឺគ្រាន់តែធ្វើការរក្សាទុកនូវ mechanism ជាមួយនឹង built-in support គឺ filesystem។

ជា default profile រក្សានូវ ទិន្នន័យដែលបានប្រមូលក្នុង %kernel.cache_dir%/profiler/ directory។ ប្រសិនបើអ្នកចង់ប្រើ ទីតាំងផ្សេងទៀតដើម្បីរក្សានូវ profiles គឺត្រូវកំណត់ dsn option នៃ framework.profiler

អ្នកក៏អាចបង្កើត profile storage service ផ្ទាល់ខ្លួនបានផងដែរ ដោយអនុវត្តនូវ ProfilerStorageInterface និង override នូវ profiler.storage server។