المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : شرح طريقة استخدام cron مهم للجميع



admin
11-02-2013, بتوقيت غرينيتش 02:01 AM
http://www.akuwait.com/upload/uploads/13064319741.gif


سندرس مفصل اليوم شيئا طالما تساءل البعض عنه
وهو استخدام تقنية cron وتشغيل ملفات php من تلقاء نفسها بدون الحاجة الى الاستدعاء



تستخدم تقنية cron لانشاء مهام مجدوله للسيرفر SERVER وهو يعنى انك ستكون لديك قدرة بعمل تشغيل لسكربتك كل ساعه او كل دقيقه أو كل أسبوع ... الخ , بصورة تلقائية بدون الحاجه الى تنفيذها يدويا.
أنت كمبرمج استخدام لتقنية cron سيكون فى عملية maintenance والتى تختص بالاصلاح والبحث عن الاخطاء وتدور حول كفاءة السكربت وجودتة.

يتخلص محور حديثنا على ما يلى :


ما هى cron
طريقة استخدام cron فى CPanel
بنية أمر cron
cron تفصيلا فى php
أمثلة على استخدام cron
مصادر cron


ما هى cron

هى الأداه الأكثر فعاليه فى تشغيل السكربتات اوتوماتيكيا بدون تدخل المستخدم عن طريق مهام مجدوله ومحدده بتاريخ التنفيذ ومعدل التكرار بصفه دورية أى تنفيذ الكود code كل ساعه أو كل يوم ... الخ
يذكر أن المهمه الأساسيه للcron هى تنفيذ أوامر لينكس على السيرفر SERVERات بصفه دورية فمثلا تنفيذ أمر لتفريغ مجلد temp تلقائيا كل أسبوع حتى لا يتسبب فى تضخم فى حجم استهلاك القرص
وعادة الاستخدام الشائع لل cron فى php هو فى اجراء العمليات الخاصه بالصيانه الخاصه بالسكربت وقواعد البيانات databases فيمكنك برمجة صفحة يتم تنفيذها كل أسبوع تقوم بتصحيح الأخطاء فى ملفات الأعضاء ... الخ
تسمى تلك التقنيه ب cron فى سيرفر SERVERات لينكس أما بوندوز فتسمى ب scheduler

طريقة استخدام cron فى CPanel :


اذا كنت معتادا على التعامل مع الشل فببساطه يمكنك كتابة الأمر التالى لاظهار كافة تسجيلات cron التى يتم تنفيذها دوريا على السيرفر SERVER :
الأمر كالتالى :

رمز Code:
crontab -e
يظهر لك مجموعه من الأسطر منها مثلا كما يظهر لدى

رمز Code:
29 1 * * * /scripts/upcp 0 1 * * * /scripts/cpbackup 35 * * * * /usr/bin/test -x /usr/local/cpanel/bin/tail-check && /usr/local/cpan$ */15 * * * * /usr/local/cpanel/whostmgr/bin/dnsqueue > /dev/null 2>&1 */5 * * * * /usr/local/cpanel/bin/dcpumon >/dev/null 2>&1 2,58 * * * * /usr/local/bandmin/bandmin
كل سطر من الاسطر السابقه يمثل أمر من أوامر cron ويتم تنفيذه فى وقت معين بطريقة دورية .
وسيتم دراسة كل شئ تفصيلا .

واذا نظرنا الى طريقة اضافة أمر تنفيذ cron عن طريق CPanel الخاصه بموقعك فيتم عن طريق الأيقونة التاليه :
http://img24.imageshack.us/img24/3724/cronlx8.jpg
اذا دخلنا الى cron بال CPanel سنجد أنها مقسمة الى طريقتين يمكنك من خلالهم اضافة أمر cron وهم :
ملحوظه : سأفترض أن العمل على CPanel 11

The Standard GUI
Advanced (Unix Style) Option

http://img11.imageshack.us/img11/7739/cron2ao1.jpg

الطريقة الاولى : The Standard GUI

تظهر كما بالسى بنل :
http://img7.imageshack.us/img7/3121/65772758.jpg


وهنا يتم تحديد بالخيار الاول البريد الالكترونى الذى تريد ان يتم ارسال ناتج تنفيذ أمر cron اليه .
وبالخيار الثانى يتم كتابة الأمر الذى سيتم تنفيذه أو مسار الملف الذى سيتم تنفيذه .
ثم بعد ذلك الوقت الذى سيتم التنفيذ به الأمر ويتم تحديد به :

Minute(s) الدقائق
Hours(s)الساعات
Days(s)الأيام
Month(s)الشهور
Weekday(s)أيام الاسبوع

بعد الانتهاء من تحديد الوقت قم بحفظ الأمر ليظهر لك صفحة تأكيد حفظ الأمر .


الطريقة الثانية : Advanced (Unix Style) Option
http://img24.imageshack.us/img24/7924/87202901.jpg
اذا نظرنا هنا سنجد ان شكل كتابة الأوامر هو مشابة بدرجه كبيره الى سلسلة الأوامر التى جلبناها من تنفيذ الأمر crontab -e على الشل

نلاحظ هنا أن بالخيار الأول يتم تحديد البريدالالكترونى الذى سيتم ارسال ناتج تنفيذ أمر cron اليه
أما بعد ذلك هو الوقت والأمر وسيتم التحدث بذلك لاحقا .
اذا كنت على خبرة بأوامر لينكس وصيغة كتابتها فقم بكتابتة وقم بحفظ الناتج وستظهر لك صفحة تأكيديه .


بنية أمر cron

بنية أمر cron هو شئ سهل للغاية
فاذا نظرنا الى أحد الاوامر مثلا

رمز Code:
29 1 * * * /scripts/upcp
وقمنا بتفصيلة بصورة مفصله سنجد أنه ينقسم الى ما يلى بصورة تسلسلية من الشمال الى اليمين :

الدقائق وتمثيلها يكون من 00 الى 59
الساعات وتمثيلها يكون بصيغة 24 ساعه أى يكون من 00 الى 23
الأيام وتمثيلها يكون من 1 الى 31
الشهور وتمثيلها يكون من 1 الى 12
يوم الاسبوع ويكون تمثيله بطريقتان :

3 حروف يمثلوا يوم الأسبوع المراد : sat , sun , mon , tue , wed , thu , fri وهم يمثلون ايام الاسبوع بالترتيب ابتداء من السبت انتهاء الى الجمعه
ارقام يتم تمثيلهم برقم من صفر الى 6 حيث يمثل صفر يوم السبت وواحد يوم الأحد وهكذا الى يوم الجمعه


الامر أو مسار الملف الذى يتم تنفيذه فى الوقت المحدد

يمثل وضع علامة النجمه * أن يتم تنفيذها دوريا أى كل يوم أو كل ساعه أو كل دقيقه ..., الخ وهو ما يسمى wildcard وهو مصطلح متعارف عليه لدى المهتمين بالشبكات والاتصالات .

اذن فالأمر السابق يعنى أن السكربت سيتم تنفيذه كل يوم و كل شهر الساعه الواحدة و29 دقيقه .

ولكن ماذا سنفعل اذا كنا نريد تنفيذ السكربت أو الأمر كل 5 دقائق
نستطيع كتابة ذلك بعدة طرق :الاولى: وهو كتابة كافة الدقائق المراد تنفيذ عندها مفصولة بفاصلة كما يلى :


رمز Code:
0 ,5,10,15,20,25,30,35,40,45,50,55 * * * * /path/to/command
وهنا تم تحديد تنفيذ السكربت بالدقيقه رقم 0 و 5 و 10 و 15 ..., الخالثانية: يوجد ب cron صيغة يتم استخدامها باستخدام * والمثال التالى يوضح ذلك


رمز Code:
*/5 * * * * /path/to/command
لا المثالين لا يختلف فى تنفيذه عن الأخر شئ


cron تفصيلا فى php
أمر cron يكون على الصورة التالية :


رمز Code:
[ Minute - Hour - Day - Month - Weekday ] - Command
وكما ذكرنا سابقا على أن ما بداخل الأقواس يمثل الوقت الذى سيتم التنفيذ به
وCommand يتم تقسيمه الى


رمز Code:
[PATH OF PHP] [ARGUMENTS] [PATH OF PHP SCRIPT]
اذن يصبح أمر cron كاملا هو كما يلى :

رمز Code:
[ Minute - Hour - Day - Month - Weekday ] [PATH OF PHP] [ARGUMENTS] [PATH OF PHP SCRIPT]
ونأتى لتفصيله كما يلى

أولا : وقت تنفيذ الأمر [ Minute - Hour - Day - Month - Weekday ] :
تم تفصيله سابقا ولكن قد يكون عملية استخدام علامة النجمه * تمثل بعض الغموض ولهذا سنتعرض له كما يلى :

رمز Code:
* * * * * => تنفيذ كل دقيقه 0 * * * * => تنفيذ كل ساعه 0 0 * * * => تنفيذ كل يوم 0 0 0 * * => تنفيذ كل شهر 0 0 0 0 * => تنفيذ كل اسبوع
ننتقل الى الجزء الثانى [PATH OF PHP] :


رمز Code:
PATH TO PHP : /usr/local/bin/php
هنا يتم استخدامه /usr/local/bin/php وهو يمثل مسار المترجم الخاص بترجمة سكربتات php على سيرفر SERVERات لينكس

الجزء الثالث [ARGUMENTS] :
عباره عن بعض الاوامر التى تؤثر فى تنفيذ السكربت ويمكن الاستغناء عن هذا الجزء وعدم كتابته


رمز Code:
-a Run interactively -b <address:port>|<port> Bind Path for external FASTCGI Server mode -C Do not chdir to the script's directory -c <path>|<file> Look for php.ini file in this directory -n No php.ini file will be used -d foo[=bar] Define INI entry foo with value 'bar' -e Generate extended information for debugger/profiler -f <file> Parse <file>. Implies `-q' -h This help -i PHP information -l Syntax check only (lint) -m Show compiled in modules -q Quiet-mode. Suppress HTTP Header output. -s Display colour syntax highlighted source. -v Version number -w Display source with stripped comments and whitespace. -z <file> Load Zend extension <file>.
الجزء الرابع [PATH OF PHP SCRIPT] :
وهو يمثل مسار الملف الذى سيتم تنفيذه وهنا يجب كتابة مسار الملف كاملا ابتداء من الروت
فمثلا اذا كان اسم المستخدم الخاص بموقعك هو mrajax
فيكون مسار الملف هو

/home/mrajax/public_html/


فاذا كانت اسم الملف file.php وموجود داخل مجلد public_html فسيكون مسار الملف هو

/home/mrajax/public_html/file.php


وعلى هذا يكون الامر مثلا الخاص بنا هو :

رمز Code:
0 * * * * /usr/local/bin/php -q /home/mrajax/public_html/cron/file.php
أمثلة على استخدام cron
رمز Code:
29 1 * * sat /usr/local/bin/php $HOME/script.php
هنا سيتم تنفيذ السكربت كل يوم سبت الساعه الواحده و29 دقيقه

الأمر التالى
/usr/local/bin/php $HOME/script.php


رمز Code:
0 2 * * * /usr/local/bin/mysqldump -db_user -db_password db_name > /home/www/backups/dbname-`date +\%s`.sql
[FONT=:Arial;&quot;][SIZE=:3;&quot;][FONT=:Arial;&quot;]
http://www.akuwait.com/upload/uploads/13064325151.gif







https://fbcdn-sphotos-d-a.akamaihd.net/hphotos-ak-ash4/482113_236967293114455_1193518507_n.png (http://www.dzbatna.com)
©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى (http://www.dzbatna.com)©

استعمل مربع البحث في الاسفل لمزيد من المواضيع


سريع للبحث عن مواضيع في المنتدى