كيفية مشاركة ذاكرة التخزين المؤقت APC بين عدة عمليات PHP عند التشغيل تحت FastCGI؟

StackOverflow https://stackoverflow.com/questions/598444

  •  11-09-2019
  •  | 
  •  

سؤال

أنا حاليا تشغيل العديد من نسخ PHP / FastCGI، مع تمكين APC (ضمن Apache + mod_fastcgi، إذا كان هذا يهم). هل يمكنني مشاركة ذاكرة التخزين المؤقت بين العمليات؟ كيف يمكنني التحقق مما إذا كانت مشتركة بالفعل؟ (اعتقد ان apc.mmap_file_mask قد يشارك إعداد INI، لكنني لا أعرف كيفية استخدامه.)

(أحد الأسباب التي أعتقد أنها ليس مشترك في الوقت الحالي هو أن apc.mmap_file_mask, ، كما ذكرت من خلال واجهة الويب Apc.php تقلب ما بين حوالي 3 قيم مختلفة أثناء إعادة تحميلها.)

هل كانت مفيدة؟

المحلول

APC لا ليس حاليا مشاركة ذاكرة التخزين المؤقت لها بين عمال PHP-CGI المتعدد يعمل تحت FastCGI أو FCGID. يرى طلب هذه الميزة للحصول على التفاصيل: "هذا السلوك هو واحد المقصود كما الآن".

حل واحد هو السماح PHP بإدارة عماله الخاصين. يمكنك القيام بذلك باستخدام متغير بيئة PHP_FCGI_CHILDREN في البرنامج النصي Wrapper الخاص بك (الكثير من الأمثلة في جميع أنحاء الويب لذلك). يجب عليك أيضا إيقاف FastCGI / FCGID من عملية التفريخ أكثر من عملية PHP إذا كنت ترغب في استخدام هذه الطريقة.

العيب لدى PHP_FCGI_CHILDREN هو أن إدارتها للعمال ليست جيدة مثل تلك المقدمة من FCGID / FastCGI.

لذلك، هناك نحن. تعني APC في بيئة FCGID / FastCGI إعطاء كل عامل PHP ذاكرة التخزين المؤقت الخاصة بهم، أو تعطيل عملية FCGID / FastCGI Spawning لصالح الإدارة المدمجة في PHP. دعونا نأمل أن هذا التغييرات في المستقبل.

نصائح أخرى

في حين أنها ليست مثالية طريقة Domster المقترحة هي الأفضل. لقد قمت بذلك لفترة قصيرة على بعض المواقع ذات الحجم المنخفض دون أخطاء. لقد كتبت تفسيرا مفصلا كيفية إعداد mod_fastcgi مع ذاكرة التخزين المؤقت المشتركة OPCODE ليلة أمس.

لقد وجدت أنه من المهم للغاية استخدام mod_fastcgi بدلا من MOD_FCGID الأحدث لأن MOD_FCGID سترسل فقط طلب واحد في وقت واحد لعملية PHP بغض النظر عن عدد الأطفال الذين تم طرح PHP عبر VP_FCCGI_CHILDREN.

يجب مشاركة ذاكرة التخزين المؤقت بين العمليات. يجب أن ترى نفس القيمة لملف MMAP بين PHPINFO () و APC.Php Invocations. يعمل بالنسبة لي مع إعدادات تكوين APC الافتراضية المقترحة:

extension="apc.so"
apc.enabled=1
apc.shm_segments=1
apc.shm_size=128
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask="/tmp/apc.XXXXXX"
apc.enable_cli=1

قد ترغب في نشر الإعدادات الخاصة بك. لقد رأيت تحذيرات أن mmap_file_mask يجب أن يكون بالضبط أحد القيم التي تسمح بها. لذلك إذا كنت تفتقد أحد هؤلاء XS، فلا يخبر ما ستحصل عليه.

ربما ينطوي على تكوين fastcgi + apache الخاص بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top