اخوتي في مجتمج arabia احتاج الى مساعدة بخصوص ارتفاع Cpu الخاص بسيرفر
السبب هو انني استعمل بعض cron jobs كل دقيقة
هل هناك حل لهذه المشكلة او بديل ان وجد ؟
المشكلة دي بتحصل لان الصفحة بتكون قيد التنفيذ و بيطلب السيرفر تشغيل الصفحة مرة تانية و بكده بعد 100 دقيقة بتكون الصفحة موجودة 100 مره و ده بيستهلك كل الرامات و المشكلة دي اسمها overlapping cron jobs
الحلول ليها كتير
فيها مثلا انك تخلي الصفحة تقفل بعد مدة معينة ودي بتستخدم فيها set_time_limit ( int $seconds )
او مثلا تستخدم Using flock وده امر في السيرفر بيمنع تنفيذ الأوامر اكتر من مرة لنفس الامر
/usr/bin/flock -w 0 /path/to/cron.lock /usr/bin/php /path/to/cron.php
او ممكن تستخدم طريقة جميلة جدا عملها واحد فنان في الصفحة دي
متنسناش في دعائك
هو يقصد أن ال jobs تحتاج إلى Optimization
ما الذى تقوم بعمله الدالة التى يتم طلبها ؟ و كيف نفذتها ؟؟ و هل تستعلم من قاعدة البيانات على بيانات زائدة لا تستخدمها ؟؟
هل تطلب API خارجى أكثر من مرة ؟؟ معظم ال APIs يكون فيها ما يسمى Batch actions فهل حاولت إستخدامها بدلاً من الطلب أكثر من مرة ؟؟
هل حاولت تقليل عدد ال limits التى تقوم بها كل مرة ؟؟
تحديث :
لم أكن قرأت هذا التعليق
قبل الرد
و أعتقد أنه جاء لك بالحل ما عليك سوى القراءة
قم بمعرفة السبب الذي يجعل الكود يرفع اللود على السيرفر ثم قم بتحسينه , او ضع الكود هنا ان امكن لمعرفة المشكلة , او طرح الفكرة المستخدمه من الممكن ان يكون هناك طريقة افضل لاتستهلك الكثير من الموارد
سبب جعل كرون جوبز يرفع اللود هو كود مرتبط مع تطبيق اسلامي
لينشر كل وقت على حسابات المشتركين في مواقع التواصل تلقائيا الاحاديث وايات قرأنية
الواضح انك تقوم بارسال لكل حساب طلب منفصل ومنها اذا زاد عدد المشتركين ستبدا الدقيقه التاليه قبل ان تنتهي العمليه السابقه
الحل باستخدام
عمل منشور موحد لجميع الحسابات في طلب واحد
التعليقات