php - एक दूसरे के साथ विवादित एक ही सर्वर पर दो लार्ज एप्लीकेशन




mysql laravel (2)

मेरे पास एक ही सर्वर पर चलने वाले 2 लार्ज एप्लीकेशन हैं I सर्वर Apache 2.4 है और मेरे पास प्रत्येक डोमेन को एक अलग डोमेन पर सेवा देने के लिए vhosts स्थापित किया गया है।

पहला एप्लिकेशन एक एपीआई है और यह .env फ़ाइल इस तरह सेट की गई है:

APP_ENV=production
APP_KEY=YYYYYYYYYYYYYYYYYY
APP_DEBUG=false
APP_LOG_LEVEL=debug
APP_URL=https://notify.mysite.com
APP_DOMAIN=notify.mysite.com


DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=notify
DB_USERNAME=YYYYYYYYYYYYYYYYYY
DB_PASSWORD=YYYYYYYYYYYYYYYYYY

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

दूसरा अनुप्रयोग एक यूआई है जो अन्य चीजों के बीच पहले एपीआई से उपयोग करता है। इसकी .env फाइल इस तरह से स्थापित की गई है:

APP_ENV=local
APP_KEY=XXXXXXXXXXXXXX
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=https://asapps.mysite.com
APP_DOMAIN=asapps.mysite.com
APP_VERSION=1


DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=asapps
DB_NOTIFY_DATABASE=notify
DB_FLIGHT_DATABASE=flights
DB_USERNAME=XXXXXXXXXXXXXX
DB_PASSWORD=XXXXXXXXXXXXXX

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

मैं डाकू से, और अन्य सर्वरों से और हर चीज की उम्मीद के अनुरूप काम करता हूं, मेरे स्वगजर संपादक से अपने API में संदेश भेज सकता हूं।

मेरी दूसरी एप्लिकेशन भी उम्मीद के मुताबिक काम करती है

हालांकि, अगर मेरा दूसरा एप्लिकेशन एपीआई के लिए अनुरोध भेजता है, तो एपीआई एप्लिकेशन इस त्रुटि को फेंकता है:

अपवाद 'PDOException' संदेश के साथ 'SQLSTATE [42S02]: बेस तालिका या दृश्य नहीं मिला: 1146 तालिका' asapps.preprocessor_config 'मौजूद नहीं है' सी में: \ notify \ विक्रेता \ laravel \ framework \ src \ Illuminate \ Database \ Connection .php: 332

WTH?

एपीआई के लिए डेटाबेस डीबीडीएटीएबीएएएसई = पर सूचित किया जाता है, और जब मैं अन्य सर्वर से संदेश भेजता हूं तो यह निश्चित रूप से उस संबंध का सही उपयोग करता है I तो क्यों वह दूसरे एप्लिकेशन के डेटाबेस कनेक्शन का इस्तेमाल करने की कोशिश कर रहा है जब मैं उस ऐप से एपीआई को कॉल करता हूं ??? इसकी लगभग पूरी तरह से यह डीबी कनेक्शन को कैशिंग कर रहा है और उसी एक का उपयोग करने की कोशिश कर रहा है .... मैं इसे कैसे रोकूं?

तालिका 'asapps.preprocessor_config' मौजूद नहीं है '


यह एक उत्तर की तुलना में एक टिप्पणी से अधिक है, लेकिन मेरे पास अब तक टिप्पणी करने के लिए पर्याप्त प्रतिनिधि नहीं है। मुझे एक समान समस्या थी, यद्यपि और मदद करने में सक्षम हो सकती है।

यदि ये दो अनुप्रयोग किसी निर्देशिका को साझा कर रहे हैं, तो लार्लेज फाइल सिस्टम को डिफ़ॉल्ट रूप से कैश में उपयोग करता है।

यदि आप दो अलग-अलग डेटाबेस कनेक्शनों के साथ एक कोडबेस साझा करना चाहते हैं, तो इसके बजाय कैशिंग के लिए डेटाबेस का उपयोग करें। आप कारीगर कमांड php artisan cache:table साथ कैश तालिका बनाने के लिए माइग्रेशन प्रकाशित कर सकते हैं php artisan cache:table

उसके बाद, बस php artisan migrate CACHE_DRIVER और अपने .env फ़ाइल में 'database' लिए लाइन CACHE_DRIVER परिवर्तित करें


अधिक खुदाई के बाद (उन्मत्त गोग्लिंग पढ़िए), मुझे यहां समस्या और समाधान मिला

निचली रेखा, जब साइट ए अनुरोध को स्वीकार करता है, तो पीएचपी भार HTTP अनुरोध की पूरी लंबाई के लिए। एएनवी चर है। उस अनुरोध के दौरान, जब साइट ए कॉल साइट बी, क्योंकि वे एक ही PHP पर चल रहे समान सर्वर पर हैं, तो php अभी भी साइट ए से एएनवी का उपयोग कर रहा है और अलग से साइट बी की। एएनवी फ़ाइल को अलग से लोड नहीं करता है।

लेखक का बेहतर विवरण:

चर के साथ .env फ़ाइल बनाई गई ताकि लोग अपने क्रेडेंशियल्स को गिथब रिपॉजिटरीज और अन्य जगहों पर नहीं धकेल जहां वे स्रोत साझा कर सकते हैं।

अब, पर्यावरण चर होने के नाते वे HTTP अनुरोध (इस मामले में स्क्रिप्ट निष्पादन) की संपूर्ण अवधि के लिए प्रणाली व्यापक हो जाते हैं। मुद्दा यह है कि आपको एक लंबी चल रही स्क्रिप्ट मिली है।

एक निश्चित समाधान खोजने के लिए आप तीन तरीकों में से एक हो सकते हैं।

....

'नेमस्पेस' एनआईवी वैरिएबल