• 0
ahmedsaoud31

تنفيذ كود تلقائياً بوقت محدد أو دورياً cronjob

سؤال

السلام عليكم ورحمة الله وبركاته

 

يوجد عدة أسئلة في المنتدى تسأل عن تنفيذ كود معين دون تدخل من المستخدم أو زيارة الصفحة من خلال المتصفح فتوجد مهمة في أنظمة Linux تسمى بـ cronjob تقوم بجدولة المهام المراد تنفيذها بعد زمن معين أو بشكل دوري ويكون الشكل العام لها كالتالي :

* [0-59] Minute|    * [0-23] Hour|    |    * [1-31] Day|    |    |    * [1-12] Month|    |    |    |    * [0-7] Day Of Week|    |    |    |    |*    *    *    *    *    Command line to execute

أول خانة للدقائق والتي تليها للساعات والتي تليها للأيام والتي تليها للشهور والتي تليها لأيام الأسبوع ثم مسار الملف الموجود به الكود المراد تنفيذه .

 

على سبيل المثال نريد تنفيذ كود الساعة 9.30 يوم 1 يناير من كل عام يكون الود كالتالي :

30 9 1 1 * /path/to/yourFile

أو تنفيذ كود كل 2 دقيقة يكون الكود كالتالي :

*/2 * * * * /path/to/yourFile

- بغيير القيمة 2 يتم تغيير قيمة الدقائق التي سيتم تنفيذ الكود بشكل دوري بعدها

 

أو تنفيذ كود كل يوم كالتالي:

0 0 * * * /path/to/yourFile

أو تنفيذ الكود كل 3 أيام كالتالي:

0 0 */3 * * /path/to/yourFile

أو تنفيذ كود بساعات محددة في اليوم كالتالي:

0 3,6,18 * * * /path/to/yourFile

أو تنفيذ كود كل شهر كالتالي:

0 0 1 * * /path/to/yourFile

أو تنفيذ كود بشهور معينة كالتالي:

0 0 1,5,11 * * /path/to/yourFile

أو تنفيذ كود كل عام:

0 0 1 1 * /path/to/yourFile

أو تنفيذ كود كل يوم سبت من كل أسبوع كالتالي:

0 0 * * 0 /path/to/yourFile

وهذا كيفما تشاء

 

يمكن عمل الـ cronjob من خلال الـ cPanel الخاصة بالإسضافة أو إستخدام الكود التالي من خلال لغة PHP لعمل الـ cronjob كالتالي:

<?php$dir = __DIR__ .'/run.php';$cronjobs = shell_exec('crontab -l');$newCronjob = "*/2 * * * * /usr/bin/php -q $dir";file_put_contents('/tmp/crontab.txt', $cronjobs.$newCronjob.PHP_EOL);echo exec('crontab /tmp/crontab.txt');?>

- طبعاً المتغير $dir هو مسار الملف المراد تنفيذه .

- وداخل المتغير $newCronjob يمكن تغيير توقيت التنفيذ كما تم شرحه في الأعلى .

 

كنت أود تنفيذ تطبيق بواجهة مستخدم لعمل الـ cronjob بسهولة من خلال واجهة رسومية دون الحاجة لمعرفة التفاصيل الخاصة بالـ cronjob ولكن لا يسعني الوقت لفعل هذا حالياً , في وقت لاحق بإذن الله تعالى .

 

ملاحظة :

- يجب أن تكون على نظام Linux ليعمل معك التطبيق أو تنفيذه مباشراً على إستضافة بنظام Linux .

تم تعديل بواسطه ahmedsaoud31
4

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

1 إجابات على هذا السؤال .

  • 0

مشكور غالي يعطيك العافية .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .