Basel सिस्टम को, लंबे समय तक चलने वाली सर्वर प्रोसेस के तौर पर लागू किया जाता है. इससे यह सुविधा मिलती है
ऐसे कई ऑप्टिमाइज़ेशन करने के लिए जो बैच-ओरिएंटेड क्रियान्वयन के साथ संभव नहीं हैं,
जैसे, BUILD फ़ाइलों को कैश मेमोरी में सेव करना, डिपेंडेंसी ग्राफ़, और किसी एक डेटा से अन्य मेटाडेटा
अगले चरण पर जाएं. यह इंक्रीमेंटल बिल्ड की स्पीड को बेहतर बनाता है,
जैसे कि build
और query
पैकेज लोड हो जाते हैं, जिससे क्वेरी बहुत तेज़ी से हो जाती हैं. हर सर्वर सिर्फ़ एक यूआरएल को ही हैंडल कर सकता है
एक बार में शुरू करना; अगर एक ही समय पर ट्रिगर होने वाले अन्य अनुरोधों को स्वीकार किया जाता है, तो
तेज़ी से काम नहीं करता (--block_for_lock
देखें).
bazel
का इस्तेमाल करने का मतलब है कि क्लाइंट की जगह पर ही क्लाइंट का विज्ञापन दिख रहा है. क्लाइंट, सर्वर को ढूंढ लेता है
आउटपुट बेस पर आधारित होता है, जो डिफ़ॉल्ट रूप से
बेस वर्कस्पेस डायरेक्ट्री के पाथ और आपके यूज़र आईडी से तय होता है. इसलिए, अगर
बनाते हैं, तो आपके पास कई आउटपुट बेस होंगे और इसलिए
कई बेज़ेल सर्वर प्रोसेसर पर काम करता है. एक ही वर्कस्टेशन पर कई उपयोगकर्ता ये काम कर सकते हैं
एक ही फ़ाइल फ़ोल्डर में एक साथ बनाएं, क्योंकि उनके आउटपुट बेस अलग-अलग होंगे
(अलग-अलग यूज़र आईडी).
अगर क्लाइंट को कोई मौजूदा सर्वर इंस्टेंस नहीं मिलता है, तो यह एक नया इंस्टेंस शुरू करता है. यह
ऐसा करने के लिए, यह जांच की जाती है कि आउटपुट बेस पहले से मौजूद है या नहीं. इसका मतलब है कि गड़बड़ी
संग्रह पहले ही अनपैक किया जा चुका है. अगर आउटपुट बेस मौजूद नहीं है, तो
क्लाइंट, संग्रह की फ़ाइलों को अनज़िप करता है और अपने mtime
के लिए 9 साल की तारीख सेट करता है
आने वाले समय में. इंस्टॉल होने के बाद, क्लाइंट पुष्टि करता है किmtime
अनज़िप की गई फ़ाइलें अब तक की तारीख के बराबर होती हैं, ताकि इंस्टॉलेशन से कोई छेड़छाड़ न हो
आ गया है.
कुछ समय तक कोई गतिविधि न होने (डिफ़ॉल्ट रूप से तीन घंटे,
जिसे स्टार्टअप विकल्प --max_idle_secs
का इस्तेमाल करके बदला जा सकता है). ज़्यादातर के लिए
कुछ हिस्सा है, तो यह तथ्य उपयोगकर्ता को नहीं दिखता कि सर्वर चल रहा है, लेकिन
कभी-कभी इस बात को ध्यान में रखना मददगार होता है. उदाहरण के लिए, अगर आप स्क्रिप्ट चला रहे हैं
जो अलग-अलग डायरेक्ट्री में कई सारे ऑटोमेटेड बिल्ड करते हैं, यह ज़रूरी है
यह पक्का करने के लिए कि आपके सर्वर पर, इनऐक्टिव सर्वर की संख्या ज़्यादा न हो; आप यह काम करके ऐसा कर सकते हैं
उन्हें बंद करने की प्रोसेस पूरी हो जाने पर उन्हें साफ़ तौर पर बंद किया जा सकता है या
समय खत्म होना.
Basel सर्वर प्रोसेस का नाम ps x
या ps -e f
के आउटपुट में दिखता है
bazel(dirname)
के तौर पर, जहां Dirname का बेसनेम है
डायरेक्ट्री के अंदर, फ़ाइल फ़ोल्डर डायरेक्ट्री के रूट में मौजूद होती है. उदाहरण के लिए:
ps -e f
16143 ? Sl 3:00 bazel(src-johndoe2) -server -Djava.library.path=...
इससे यह पता लगाना आसान हो जाता है कि कौनसा सर्वर प्रोसेस दिए गए पेज से जुड़ा है
name@yourcompany.com जैसा कोई प्रोफ़ेशनल ईमेल पता बनाएं. इससे आपका कारोबार ज़्यादा भरोसेमंद बनेगा. (ध्यान रखें कि ps
, Basel सर्वर के कुछ अन्य विकल्पों के साथ
प्रक्रियाओं को केवल java
का नाम दिया जा सकता है.) Basel सर्वर को
बंद करें आदेश.
bazel
चलाते समय, क्लाइंट पहले यह जांच करता है कि सर्वर सही है या नहीं
वर्शन; अगर नहीं, तो सर्वर बंद हो जाता है और एक नया चालू हो जाता है. इससे पक्का होता है कि
लंबे समय तक चलने वाली सर्वर प्रोसेस का इस्तेमाल करने से, सही
वर्शन.