हाल ही में, हमारे PHP वेब ऐप कुछ मिनटों के लिए अनुपलब्ध हो गया क्योंकि हमारे मेमकैड नोड्स में से एक की मृत्यु हो गई है (हम Memcachier को मेमकैच प्रदाता के रूप में उपयोग करते हैं)।हेरोकू/PHP 5.6 पर्यावरण में विफलता समर्थन के साथ Memcached कैसे सेटअप करें?
यह हमारे user.ini
विन्यास, जो काम किया (Heroku एक जगह है जहाँ आप अपने विन्यास को परिभाषित के रूप में user.ini
उपयोग करता है) था, लेकिन जाहिरा तौर पर विफलता का समर्थन नहीं किया:
session.save_handler=memcached
session.save_path=${MEMCACHIER_SERVERS} # I understand this is redundant, but I just kept it as-is because I didn't write the original user.ini
session.save_path="PERSISTENT=SFSESSID ${MEMCACHIER_SERVERS}"
session.gc_maxlifetime=1209600
session.gc_probability=1
memcached.sess_binary=1
memcached.sess_sasl_username=${MEMCACHIER_USERNAME}
memcached.sess_sasl_password=${MEMCACHIER_PASSWORD}
हमारी नई user.ini
विन्यास, जो करने के लिए उद्देश्य से है 123.45678.us-east-1.heroku.prod.memcachier.com:11211,123.45678.us-east-1.heroku.prod.memcachier.com:11211
: विफलता क्षमता
session.save_handler=memcached
session.save_path="PERSISTENT=SFSESSID ${MEMCACHIER_SERVERS}"
session.gc_maxlifetime=1209600
session.gc_probability=1
memcached.sess_sasl_username=${MEMCACHIER_USERNAME}
memcached.sess_sasl_password=${MEMCACHIER_PASSWORD}
memcached.sess_binary=1
memcached.sess_number_of_replicas=1
# I also tried memcached.sess_consistent_hash=1, to no avail
MEMCACHIER_SERVERS
env var इस तरह दिखता है प्रदान करते हैं। मुझे लगता है कि इसका मतलब है कि हमारे पास 2 नोड्स हैं।
नई कॉन्फ़िगरेशन के साथ हम जो समस्याएं प्राप्त कर रहे हैं वह टाइमआउट हैं, और PHP सत्र फ़ंक्शंस (session_start()
, session_write_close()
) के संबंध में कई त्रुटियां हैं।
ऐसा क्यों हो रहा है?
याद रखें, हम अपने PHP कोड के अंदर मेमकैड का उपयोग नहीं कर रहे हैं, लेकिन केवल हमारे सत्र स्टोरेज इंजन के रूप में।
मैंने मेमकैचियर समर्थन से संपर्क करने का प्रयास किया, लेकिन ग्राहक प्रतिनिधि केवल अनुशंसित PHP कोड प्रदान कर सकता था (जिसे हमें आवश्यकता नहीं है)।
पर्यावरण के बारे में बिल्कुल यकीन नहीं है, आप इसे उच्च उपलब्ध कराने के लिए प्रॉक्सी क्यों नहीं जोड़ते? – Yarco
Memcachier SaaS हमारे लिए यह करता है। –
'session.gc_divisor' का मूल्य क्या है? शायद सत्र कचरा संग्रह अक्सर शुरू किया जाता है? –