تحديث الكاش cache عند عمل symlink في nginx

ZaFaR97 • منذ 5 سنوات

بسم الله الرحمن الرحيم

تبعًا لسؤالي السابق :
رفع الملفات على السيرفر

قمت بتجربة عملية الـ symlink

1- مثلا لديّ الآن ملف test.php عملت له symlink أي ربط مع ملف test1.php يطبع one

نجحت العملية

2- نفس الشيء مع ملف test2.php يطبع tow

3- نفس الشيء مع ملف test3.php يطبع three

* الآن عندما أُعيِدهُ مع ملف test1.php يطبع one

أكرر بعدها ربطه مع test2.php يطبع one !

ولا يقبل التغيير إلا بعد عملية reset_opcache أو reload php-fpm

 

- المفهوم: عندما يكون الملف الذي تمّ الربط به موجود مسبقا في الكاش ( مثلا ربطنا بـ1 ثم بـ2 ثم عدنا لـ1 ، الآن لو نغير الربط الى 3 أو 4 أو 2 لن يستجيب ).

* مع العلم أنني أضفت $realPath في اعدادات الـ nginx.

هل لهذه العمليّة حلّ غير ؟ لأنني قرأت أنّ مسح الـ opcache سيوقف العمليات القديمة بواسطة الـphp، بينما إذا بقيت ستعالج العمليات السابقة، وتعالج العمليات الجديدة بالإصدار الجديد.

#إضافة : جربت عمل for loop ، وغيّرت الـ symlink أثناء التنفيذ لملف آخر، وعملت opcache_reset ولكنّ الـ for loop أكمل عمله بالنسخة القديمة بشكلٍ طبيعي، ولم يتعطل، أو يتبدل، والمعالجة التي بعدها غيّر للإصدار الجديد مباشرة، يبدو أنّني سأعتمد على عمل opcache_reset بعد كل تحديثٍ، أو الحلّ التاليّ

وهو ربطُ symlink بالمجلّد وليس الملف، ويتم تغيير اسم المجلد - مثلا كل عملية تحديث يتم وضعها في مجلد اسمه UNIX_TIMSTAMP بالتالي لن يتكرر الاسم. هل من حلول أخرى؟ أم هي عملٌ طبيعي ؟

ساعد بالإجابة

"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."

الإجابات (1)

ZaFaR97 • منذ 5 سنوات

أكتشفت بعد البحث أنه لابد من عمل opcache_reset بعد تغيير الـ symlink، ولم أجد أيّ حلول أخرى..

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !