php - Advice To Improve Efficiency Of API Call And Cache -


तो मेरे पास निम्न कोड है:

  निजी फ़ंक्शन getArtistInfo ($ artist) {$ कारीगर = json_decode ($ कलाकार, सच); $ ArtistObj = सरणी (); // अमेरिकन प्लान ($ कलाकार); $ कलाकार ओबज ['आईडी'] = $ कारीगर ['नाम'] ['आईड्स'] ['नाम']; $ Memcache = नया मेम्केचड ($ कलाकार ओबज ['आईडी']); $ कलाकार कैचेस = $ memcache- & gt; getMemcache (); अगर ($ कलाकार कच === झूठे) {$ कलाकार ओबज ['नाम'] = $ कारीगर ['नाम'] ['नाम']; $ कलाकार ओबज ['छवि'] = $ कारीगर ['नाम'] ['चित्र'] [0] ['url']; $ InitArtist = array ('id' = & gt; $ artistObj ['id'], 'name' = & gt; $ artistObj ['name'], 'image' = & gt; $ artistObj ['image']); $ कलाकार $ = $ इस- & gt; बिल्ड कलाकार ($ कारीगर, $ कलाकार ओबज); $ Memcache- & gt; setMemcache ($ artistObj); } और {$ initArtist = array ('id' = & gt; $ कलाकार कैश ['आईडी'], 'नाम' = & gt; $ कलाकार कैच ['नाम'], 'छवि' = & gt; $ कलाकार कैश ['छवि']) ; } वापसी $ init कलाकार; }  

अब कोड काम करता है लेकिन इसे प्राप्त करने के लिए getArtistInfo () बहुत लंबा होता है जब मैं सिर्फ $ init कलाकार मान चाहता हूं; मैं चाहूंगा कि अपने ग्राहक को इसके निर्माण के तुरंत बाद $ init कलाकार प्राप्त करने के लिए, और किसी भी तरह $ $ कलाकार के कैशिंग को पृष्ठभूमि में चलाया जाए।

अब तक मैंने कई अलग-अलग विषय पर पढ़ा है जो मैंने सोचा था कि उपयोगी: घटना प्रतिनिधिमंडल, कॉलबैक फ़ंक्शन, कॉल_युसर_फंक्, पर्यवेक्षक पैटर्न, थ्रेडिंग, गियरमॅन ​​आदि। हालांकि, मुझे नहीं पता है कि उनमें से एक वास्तव में मैं क्या चाहता हूं। कृपया मुझे सही दिशा में बताएं

संपादित करें:

मेरी मेस्किचड क्लास:

  वर्ग मेमकैच {निजी स्थिर $ MEMCACHED_HOST = "स्थानीयहोस्ट"; निजी स्थिर $ MEMCACHED_PORT = "11211"; निजी $ आईडी, $ कुंजी, $ memcache, $ cacheOK; फ़ंक्शन __ रूपांतरण ($ आईडी) {$ this- & gt; id = $ id; $ इस- & gt; कुंजी = 'कलाकारआईडी_' $ इस- & gt; आईडी; $ This- & gt; memcache = नया मेम्काचे; $ इस- & gt; कैश ओके = $ यह- & gt; मेम्कैश- & gt; कनेक्ट (मेम्केच :: $ MEMCACHED_HOST, मेमकेच :: $ MEMCACHED_PORT); } सुरक्षित फ़ंक्शन getMemcache () {$ artistInfo = null; यदि ($ this- & gt; cacheOK === सच) {$ artistInfo = $ this-> memcache- & gt; प्राप्त करें ($- >->;); } यदि ($ artistInfo === झूठी) {वापसी झूठी; } $ कलाकार INFO लौटें; } सार्वजनिक फ़ंक्शन सेटममकैच ($ कलाकार इन्फॉन्फ़ो) {$ this- & gt; मेम्कैश- & gt; सेट ($- >- $, $, INFO-, 0, 60); }}  

मेरा निर्माण कलाकार () कोड:

  निजी फ़ंक्शन निर्माण कलाकार ($ कारीगर, $ कलाकार ओबज) {$ कलाकार ओबज ['amgID'] = $ कारीगर [ 'नाम'] [ 'आईडी'] [ 'amgPopId']; $ डिस्कोग्राफी = $ कारीगर ['नाम'] ['डिस्कोग्राफी']; विदेशी मुद्रा ($ एल्बम के रूप में $ डिस्कोग्राफी) {$ albumID = $ एल्बम ['आईडी'] ['एएमजीपीआईआईडी']; Preg_match ('/ (\ d +) /', $ एल्बमआईडी, $ मैचों); $ एल्बम ओजज ['एम्ग्लैबूमआईडीआईडी'] = $ मैच [1]; $ एल्बम ओबज ['शीर्षक'] = $ एल्बम ['शीर्षक']; $ एल्बम ओबज ['रिलीज़डेट'] = $ एल्बम ['वर्ष']; $ एल्बम ओबज ['अधिक'] = $ इस- & gt; getMoreMusic ($ एल्बम ओजज ['शीर्षक'], $ कलाकार ओज ['नाम']); $ कलाकार ओबज ['डिस्कोग्राफी'] [] = $ एल्बम ओबज; } $ कलाकार लौटें; }  

ठीक है, यह पूरी तरह से स्पष्ट नहीं है कि कब तक बहुत लंबा है, या इस कोड का कौन सा हिस्सा है जो आपको धीमा कर रहा है हम सभी जानते हैं, धीमी गति का हिस्सा नहीं है जो मेम्केच में डेटा संग्रहीत करता है।

किसी भी स्थिति में, एक बार जब आप यह पहचान लें कि यह आपकी बाधा है, तो आप इस प्रकार को पूरा करने के लिए एक बात कर सकते हैं बिना निष्पादन निष्पादन एक ब्रोकरलेस मैसेजिंग कतार का उपयोग करता है जैसे कि कैश्ड की आवश्यकता है जो JSON ऑब्जेक्ट को स्वीकार करना है। एक अलग PHP स्क्रिप्ट फिर इन अनुरोधों को संसाधित करने और किसी भी वेब-अनुरोध के बाहर अतुल्यकालिक रूप से बाहर काम करने की नौकरी ले सकता है। इस अलग स्क्रिप्ट को क्रॉन-नौकरी या किसी अन्य जॉब मैनेजर के माध्यम से चलाया जा सकता है जो समानांतर में कैशिंग भाग को संभालता है।


Comments

Popular posts from this blog

scala - Play Framework - how to bind form to a session field -

c++ - Why does Visual Studio Release build break on non-executing code line -

Firefox reacting to JQuery setTimeout that doesn't apply -