آموزش Cron Job در PHP

  • آپدیت شده در تاریخ

آموزش Cron Job در PHP

قبل از شروع آموزش Cron Job در PHP نیاز است مفاهیمی را یاد بگیریم

کرون جاب یا Cron Jobs قابلیتی در سیستم های لینوکسی می باشد که وظیفه ی اجرای عملیاتی خاص در زمانبندی خاصی را به صورت کاملا اوتوماتیک بر عهده دارد. با استفاده از کرون جاب به صورت کلی می توانید کار های روتین و تکراری را به سادگی و بدون دخالت کاملا اوتوماتیک زمانبندی و اجرا نمایید .

این عملیات می تواند بعنوان مثال برای اجرای زمانبندی شده ی یک فایل PHP به منظور ارسال ایمیل به کاربران که به صورت اتوماتیک در زمان مشخص شده مثلا هر روز ساعت ۹ صبح باشد و یا گرفتن بکاپ از پایگاه داده, عملیات پاکسازی, تهیه گزارش آنالیز هفتگی, دریافت فید RSS و …

کارهایی که باید با زمانبندی انجام شوند در فایلی با نام CronTab ذخیره می شوند. CronTab یک فایل متنی است که در هر سطر آن یک دستور با فرمتی که برای Cron قابل فهم است قرار می گیرد. به هر کدام از دستورات این فایل اصطلاحا Cron Job گفته می شود.

یک کرون جاب همیشه شامل ۵ ستون است که هر کدام از آنها نشان دهنده زمان است که نهایتا به یک مسیر یا دستور برای اجرا ختم می شود.

هر کدام از ستون ها به ترتیب نشان دهنده :

  • Minutes : دقیقه [۰-۵۹]
  • Hours : ساعت [۰-۲۳]
  • Days : روز [۱-۳۱]
  • Months : ماه [۱-۱۲]
  • Days of the Week : روزهای هفته [۰-۶]

برای مثال, اگر می خواهید زمان بندی را برای ۱۲قبل از ظهر اولین روز هر ماه قرار بدید, چیزی مثل دستور زیر را خواهید داشت:

اگر قصد دارید که زمان بندی را برای هر شنبه در ۸:۳۰ قرار بدید :

همچنین اوپراتون های دیگه وجود دارد که میتونید در زمان بندی استفاده کنید

  • کاما (,) برای ساخت لیستی از مقادیر از هر ستون کرون
  • خط تیره () برای مشخص کردن محدوده مقادیر
  • ستاره ها (*) برای مشخص کردن مقدار همه

cronTab به صورت پیش فرض یک ایمیل اطلاع رسانی را برای تسک اجرا شده ارسال می کند در بعضی شرایط به ارسال این ایمیل نیاز نداریم برای همین می توانیم خروجی را به دیوایس /dev/null انتقال بدیم. این انتقال خروجی با اوپراتور > انجام میشود .

اگر قصد دارید که ارور ها رو هم به دیوایس نال انتقال بدید میتونید از این دستور نیز بهره ببرید.

 

طرح کلی آموزش Cron Job در PHP

برای مدیریت cronTab در PHP , نیاز است که قابلیت اجرای دستور شل را روی سرور به منظور ویرایش فایل cronTab را داشته باشیم. در تعداد کمی از سرور های اشتراکی معمولا این قابلیت در دسترس است و در سرورهای مجازی و اختصاصی می توانید از این قابلیت به سادگی بهره ببرید.

در PHP برای اتصال به SSH2 میتوانیم از کتابخانه SSH2 استفاده کنیم. برای نصب کتابخانه ssh2 می توانید از این لینک استفاده کنید

برای شروع کار یک کلاس برای آموزش Cron Job در PHP نوشتیم که در زیر به تشریح ساختار آن می پردازیم.

در ابندا چهار property زیر را تعریف کردیم

  • $connection : کانکشن دیتابیس ما / ریسورس خروجی اتصال
  • $path : مسیر فایل
  • $handle : نام فایل کرون موقت ما
  • $cron_file : مسیر کامل فایل و نام فایل کرون

کلاس ما باید قابلیت اتصال و احراز هویت به منظور اجرای دستورات و داشتن دسترسی به cronTab کاربر را داشته باشد. بنابراین ما یک کانکشن SSH2 را داخل constructor برقرار و احراز هویت می کنیم.

برای اجرای دستورات نیاز است که از متد exec() استفاده کنیم.

سپس, نیاز به این خواهیم داشت که بتوانیم در فایل cronTab رایت کنیم. همچنین به راهی نیاز داریم که بتوانیم بعد از اتمام کار این فایل را حذف کنیم. برای اینکار متد write_to_file() و remove_file() را تعریف می کنیم.

البته, به راهی نیاز داریم که بتوانیم cron job ها را بسازیم و پاک کنیم. برای همین به ترتیب متدهای append_cronjob() و remove_cornjob() را ایجاد می کنیم.

برای اینکه بتوانیم کل cronTab ها را حذف کنیم نیاز است از متد remove_crontab() برای مدیریت این عملیات بهره ببریم.

در آخر, نیاز به دو متد کمکی (helper method) داریم. اولین متد, که مقدار بولین (boolean) را برگشت می دهد, بطور ساده وجود فایل موقت cron را بررسی می کند, متد بعدی, برای نمایش ارور های پیش امده استفاده می شود. نام متدهای به ترتیب crontab_file_exists() و error_message() خواهد بود.

 

کلاس کلی برای کار ما در ادامه آموزش Cron Job در PHP بصورت زیر است:

برای دانلود کامل این کلاس به همراه متدها به باکس دانلود زیر این پست مراجعه کنید

اجرای کلاس آموزش Cron Job در PHP

برای شروع در ابتدا, یک شی نمونه از کلاس خود را می سازیم. که نیاز است در ابتدا آدرس IP , پورت , نام کاربری و پسورد را به کلاس سازنده (constructor) پاس بدیم

اضافه کردن یک cron job :

با داشتن کانکشن احراز هویت شده می توانیم یک کرون جاب جدید را بسازیم.

اضافه کردن آرایه ای از cron job ها :

افزودن تعدادی از cron job ها به سادگی اضافه کردن یک cron job است. به راحتی آرایه از کرون جاب را به متد apeend_cronjob() می دیم.

حذف یک cron job :

در اینجا از عبارت های با قاعده (Regular Expression) برای پیدا کردن یک کرون جاب یکتا و حذف آن استفاده می کنید . مطیمنا بسته به کرون جابی که می خواین مثلا بر اساس ماه پیدا و حذف کنید عبارت regex شما متفاوت خواهد بود.

حذف آرایه ای از cron job ها :

همانند حذف یک cron job اینجا هم از regex استفاده می کنیم که هر کدام از آن را در خانه ای از آرایه قرار میدیم و در نهایت متد remove_cronjob را اجرا می کنیم.

 

جمع بندی

همانطور که دیدید چقدر کار با Cron Job در PHP آسان و لذت بخش است . بخصوص که کلاس خودمان را نوشتیم و بدون استفاده از کلاس دیگه ای از متد های ساخته شده خودمان عملیات مختلف را کنترل کردیم .

مطمینا متوجه شدید که task scheduling چقدر میتونه در مدیریت اسکریپت ها در اپلیکیشن های تحت وب مفید و کارامد باشد و با استفاده از کرون جاب به صورت کلی می توانید کار های روتین و تکراری را به سادگی و بدون دخالت کاملا اوتوماتیک زمانبندی و اجرا نمایید .

 

امیدوارم از آموزش Cron Job در PHP نهایت استفاده را برده باشید .

برای دانلود سورس کد کامل کلاس و متدهای استفاده در این آموزش از باکس دانلود استفاده کنید.

هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .

موفق و پیروز باشید.

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۴۸)

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. امید ۲ خرداد ۱۴۰۳

    سلام و تشکر بابت سایت خوبتون
    کتابخانه shh2 برای ویندوز متاسفانه دانلود نمیشه اگر فایلش رو داریم لطف کنید و به ایمیل من بفرستید با تشکر .
    لینک دانلود که خراب هست : https://pecl.php.net/package/ssh2/1.4.1/windows

    پاسخ
    1. حسن شفیعی ۴ خرداد ۱۴۰۳

      سلام. خوشحالیم که مفید واقع شده
      طبق نسخه php خودتون در جدول دوم در این صفحه
      https://pecl.php.net/package/ssh2/1.4.1/windows
      میتونید دانلود کنید

      پاسخ
  2. مهران ۵ شهریور ۱۴۰۲

    سلام ممنون از توضیحات خوبتون
    من کدهام رو با php نوشتم، حالا اگر کسی لینک این صفحه رو بدونه و بشینه تند تند رفرش بشه کارم رو خراب میکنه
    چیکار کنم که فقط کران جاب بتونه این مورد رو اجرا کنه و اگر کسی لینک رو پیداش کرد نتونه خرابکاری کنه

    کدی نوشتم که پیامک می فرسته و اگر لینک بیفته دست اهلش می دونید که چه بلایی سرمون میاره

    پاسخ
    1. حسن شفیعی ۶ شهریور ۱۴۰۲

      سلام
      این رو اول فایل php اضافه کنید

      if( $_SERVER[‘REMOTE_ADDR’] != $_SERVER[‘SERVER_ADDR’] || $_SERVER[‘REMOTE_ADDR’] != “127.0.0.1” ){
      die(‘Access denied!’);
      }

      یا .htaccess زیر رو در فولدری که فایل مورد نظر هست بزارید


      Order Allow,Deny
      Deny from all

      پاسخ
  3. امیرحسین ۲۰ تیر ۱۴۰۲

    سلام
    خوب هستین
    من طبق چیزایی که گفتین اول رو یه هاستی تست کردم و به یه اروری خوردم

    PHP Fatal error: Uncaught Error: Call to undefined function ssh2_connect()

    و چک کردم دیدم دسترسی SSH2 رو تو هاست ندارم

    رو یه هاست دیگه تست کردم که این دسترسی بود و تیکه کد زیر رو نوشتم ( واسه ربات تلگرامی هستش)

    if( $text == “تست” ){
    SendMessage($fid,”قبل تیکه کد که ارسال میشه”);

    $crontab = new Ssh2_crontab_manager(‘77.388.330.86’, ‘2083’, ‘amioei82’, ‘@kaks_iiw8sk’);
    $crontab->append_cronjob(‘* * * * * home/amioei82/public_html/Bot/test.php >/dev/null 2>&1’);

    SendMessage($fid,”بعد تیکه کد که ارسال نمیشه”);
    exit;
    }

    همینطور که میبینی نوشتم تیکه کد قبل این درخواست ست کردن کرون اجرا میشه و پیام تو تل ارسال میشه، ولی تیکه کد بعد درخواست اجرا نمیشه
    انگاری مثلا شرط بریک میشه اونجا

    کرونی هم ست نمیشه
    فایلی هم که آدرس دادم وجود داره و بدون باگ هستش

    پاسخ
    1. حسن شفیعی ۲۲ تیر ۱۴۰۲

      سلام. ممنون
      از exit استفاده نکنید

      پاسخ
  4. مصطفی ۳ مهر ۱۴۰۱

    سلام وقت بخیر
    من یک سرور centOs دارم و داخلش یک پوشه دارم برای اجرای فایل های php ، قطعه کد php ای دارم که وظیفش ساخت فایل با پسوند txt هست که میخوام در روز و ساعت های مشخص تعداد مشخصی فایل txt برام بسازه. مثلا در تاریخ ۷ مهر ماه ساعت ۱۰ صبح ۳۰ تا فایل txt بسازه.
    با توجه به سرور موجود چطور میتونم این کار و انجام بدم؟ آیا به پیش نیازی برای نصب احتیاج دارم؟

    پاسخ
    1. حسن شفیعی ۳ مهر ۱۴۰۱

      سلام.
      هیچ چیزی غیر از همین دستورات کرون جاب نیاز نیست کافیه کدهای php ساخت فایل های txt رو بنویسید و داخل کد php اولش چک کنید که امروز همون تاریخ و ساعت باشه و بعد کرون جاب رو بزارید هر ساعت یکبار و تمام

      پاسخ
      1. mostafa ۵ مهر ۱۴۰۱

        سلام
        در سرور من هیچ دستوری در cron tab ای اجرا نمیشه، حتی زمانی که با دستور crontab -e در خود ادیتور لینوکس مینویسم هم اجرا نمیشه. به نظرتون چرا این اتفاق میفته؟

        پاسخ
      2. حسن شفیعی ۵ مهر ۱۴۰۱

        سلام.
        باید این موارد رو از مدیر سرور یا هاستینگ ببرسید تا بررسی و رفع کنند

        پاسخ
  5. محمد امین سلمانی ۲۲ تیر ۱۴۰۱

    سلام. من یه تکه کد php دارم که می خواهم “آخرین دوشنبه هر ماه” اجرا بشه.

    سوال اولم این هستش که آیا می شود این رو کاملا به کرون جاب سپرد یا نه ؟ (یعنی چجوری میشه تعریف کرد که فقط آخرین دوشنبه ماه باشه …)

    و سوال دومم که مهم تر هست، اینکه چجوری می شود در php بررسی کرد که امروز آخرین دوشنبه ماه است ؟

    پاسخ
    1. حسن شفیعی ۲۲ تیر ۱۴۰۱

      سلام.
      برای این موارد باید از strtotime استفاده کنید:

      strtotime(“last Monday of “.date(‘Y-m’));
      این تابع مقدار timestamp آخرین دوشنبه ماه فعلی رو به شما میده
      تو phpتون این تابع رو میزارید چک میکنید که اگه time() فعلی مساوی یا بزرگتر خروجی strtotime بود اون کاری که میخواید انجام بشه. فایل php رو هم مثلا میتونید به کرون جاب هر ۱۲ساعت یا ۲۴ساعت یکبار بزارید

      پاسخ
  6. Amirhosein ۲۸ آبان ۱۴۰۰

    من یه لینک دارم، نیاز دارم که هر دقیقه یکبار خودکار لود بشه. کرون جاب آماده با php برای اینکار هست؟
    هاستم دستور wget اجرا نمیکنه

    پاسخ
    1. حسن شفیعی ۲۹ آبان ۱۴۰۰

      خود هاست کرون جاب داره

      پاسخ
  7. محمد ۱۲ شهریور ۱۴۰۰

    درود
    وقت بخیر
    داخل بعضی از سایت ها مخصوصا خارجی هابرای اجرای کرون جاب از بعضی از سوئیچ ها در مقابل php استفاده کردن، مثل php -q /path/script.php یا php -f /path/script.php ، مقدور هست راهنمایی بفرمایید که این سوئیچ های q و f چه تفسیری و عملکردی دارند؟
    با سپاس

    پاسخ
    1. حسن شفیعی ۱۳ شهریور ۱۴۰۰

      سلام ممنون این آموزش رو ببینید :
      آموزش PHP CLI

      پاسخ
  8. علی ۲۵ مرداد ۱۴۰۰

    با سلام عالی بود
    من یه فانکشن در فایل فانکشن دارم مثلا
    function test()
    {
    .
    .
    }
    و می خوام در زمان مشخص از طریق جاب کرون اجرا بشه
    چطور در جاب کرون فانکشن ;()test را صدا بزنم که اجرا بشه?
    با سپاس…

    پاسخ
    1. حسن شفیعی ۲۵ مرداد ۱۴۰۰

      سلام. اول این تابع رو داخل یک فایل php قرار میدید و بعد اون فایل رو برای کرون جاب ست می کنید

      پاسخ
      1. علی ۲۶ مرداد ۱۴۰۰

        ممنون ولی می خوام کد php داخل کرون جاب اجرا بشه که نمیشه
        اصلا یه طور دیگه ای توضیح میدم
        چرا دستوراتی مثل دستور زیر در فایل کرون جاب اجرا نمی شود؟
        wp_set_object_terms(396, 55, ‘product_tag’ , true);
        یا
        wp_set_object_terms(83, 100, ‘product_cat’ , true);
        یا هر دستور php
        می دونید این دستور ها اگر در فایل های قالب سایت مثلا در index.php یا single-product.php باشد اجرا می شود البته اگر صفحه اصلی سایت یا صفحه محصولی را در بروزر باز کنیم ولی همین کدها در فایل کرون جاب اجرا نمی شود. یه جوری انگار کدها را نمی فهمد
        چه باید کرد؟

        پاسخ
      2. حسن شفیعی ۲۶ مرداد ۱۴۰۰

        توابع مربوطه در فایل فراخوانی بشه وگرنه این کدها چون نیاز به فایل اصلی دارند اینجوری اجرا نمی شوند
        برای ورردپرس کلی افزونه برای کرون جاب هست :
        https://kinsta.com/knowledgebase/wordpress-cron-job/

        پاسخ
  9. amir ۱۴ تیر ۱۴۰۰

    سلام
    آیا وبسرویسی هست که بشه با اون کرون جاب کرد؟(در سی پنل ذخیره نشده)

    پاسخ
    1. حسن شفیعی ۱۴ تیر ۱۴۰۰

      سلام. بله خیلی زیاد هستند گوگل سرچ کنید
      مثلا https://cron-job.org/en

      پاسخ
  10. سعید ۲۶ دی ۱۳۹۹

    سلام
    من می‌خواهم پست زمانبندی شده مثل وردپرس ایجاد کنم.
    یعنی یک زمان و تاریخ رو بهش بدم و بعد بگم که زمانی که به این تاریخ و ساعت رسیدی خودت منتشر شو.
    آیا این کار را با این آموزش می تونم انجام بدم؟
    ممنون می شم راهنمایی کنید.

    پاسخ
    1. حسن شفیعی ۲۶ دی ۱۳۹۹

      سلام. بله دقیقا با این آموزش میتونید این کار رو انجام بدید
      حتی از خود cron job داخلی هاست هم میتونید بهره ببرید.
      به این صورت که در جدول مقالات در دیتابیس شما یک سطر دیگه اضافه می کنید مثلا publish_at که اینجا timestamp آینده که میخواید منتشر بشه رو مشخص می کنید.
      بعد یک فایل php ایجاد می کنید که داخل آن به دیتابیس کویری می زنید و در جدول مقالات یک where publish_at > NOWTIME که NOWTIME همان خروجی time() فعلی هست و اگر این کویری خروجی داشت شما مقدار published اون مقاله رو در دیتابیس مثلا ۱ می کنید و این مقاله در سایت نمایش داده میشود.

      بعد این فایل php رو بصورت cron job هر ده دقیقه یکبار داخل هاست ست می کنید

      پاسخ
  11. ماهان حاتمی ۲۵ آذر ۱۳۹۹

    سلام من یک سایت آزمون آنلاین دارم، میخوام در یک زمانی که از قبل تعیین شده آزمون فعال یا غیر فعال شود ؟؟!
    کرون جاب این امکان را دارد ؟؟!
    اگر دارد لطفا راهنمایی ام کنید !

    پاسخ
    1. حسن شفیعی ۲۵ آذر ۱۳۹۹

      سلام. بله کد خودتون رو در یک فایل php بنویسید و داخل دیتابیس سطر آزمون یک فیلد برای این مورد بزارید که مقدارش همان زمان غیرفعال شدنش به timestamp باشه بعد کرون جاب بزارید و مثلا هر یک دقیقه یکبار این فایل php اجرا بشه و داخل کدهای آن چک بشه که اگر زمان فعلی بزرگتر یا مساوی timestamp ذخیره شده بود سطر آزمون در دیتابیس مثلا status رو ۰ کنه.
      موفق باشید.

      پاسخ
  12. nargesizm ۴ شهریور ۱۳۹۹

    سلام
    من یک فایل php دارم که میخوام در هر روز یک ایمیل به کاربران ارسال بشه و با استفاده از Cron Jobs تنظیمات رو انجام دادم اما پس از اجرا Permission denied به ایمیلم ارسال میشه.
    آیا در فایل php باید کامندهای لینوکس نوشته بشه ؟
    آیا فایلی که تنها کدهای php نوشته شده قابل استفاده نیست؟

    ممنونم از راهنماییتون

    پاسخ
    1. حسن شفیعی ۴ شهریور ۱۳۹۹

      سلام.
      بعد اینکه فایل php شامل کدهای ارسال ایمیل هست را نوشتید کافیه که اون رو داخل کرون جاب هاست تنظیم کنید و نیاز نیست برای کرون جاب کدجداگانه ای بنویسید.

      آموزش ایجاد کرون جاب در کنترل پنل Cpanel
      https://my.mihanwebhost.com/knowledgebase.php?action=displayarticle&id=210

      آموزش کرون جاب (Cron Jobs) در دایرکت ادمین
      https://my.mihanwebhost.com/knowledgebase.php?action=displayarticle&id=161

      پاسخ
      1. nargesizm ۴ شهریور ۱۳۹۹

        سپاس
        دلیل Permission denied بودن رو میشه لطفا بفرمائید؟
        و چطور میشه پرمیشن فایل را روی ۷۵۵ قرار بدم؟
        ممنون از راهنماییتون

        پاسخ
      2. حسن شفیعی ۴ شهریور ۱۳۹۹

        از چه دستوری استفاده می کنید ؟
        دستور شما باید بصورت زیر باشه :
        php /home/USER/public_html/run.php
        اگر بازم این خطا را دارید حتما به هاستینگ تیکت بزنید راهنمایی می کنند.

        پاسخ
      3. nargesizm ۴ شهریور ۱۳۹۹

        سلام مجدد و تشکر
        مورد Permission رفع شد اما این خطا را دریافت میکنم:
        line 1: syntax error near unexpected token `(‘
        فایل یکبار به صورت تست run شده و بدون خطا اجرا شده اما هنگام اجرا توسط cron jobs این خطا گرفته میشه
        ممنون میشیم راهنمایی بفرمائید.

        پاسخ
      4. حسن شفیعی ۴ شهریور ۱۳۹۹

        سلام. در بعضی هاستینگ ها دستور اجرای کرون جاب ممکن هست فرق داشته باشه که به هاستینگ تیکت بزنید و بپرسید

        پاسخ
  13. علی ۲۴ خرداد ۱۳۹۹

    باز کردن دسترسی به شل (اینکه بشه دستورات شل اجرا کرد) مشکل امنیتی ایجاد نمیکنه؟ این مشکل رو چجوری برطرف میکنید؟

    پاسخ
    1. حسن شفیعی ۲۴ خرداد ۱۳۹۹

      سلام. روی سرورهای مجازی مشکلی از این نظر پیش نمیاد.

      پاسخ
  14. محمد ۱۱ خرداد ۱۳۹۹

    با عرض سلام ببخشید یک لینک دانلود دارم میخوام وقتی پرداخت انجام شد این لینک فعال شود چطوری داخل دیتابس باید شرط بزارم . و چطوری میتونم واسه لینکم زمانبندی بزارم ؟

    پاسخ
    1. حسن شفیعی ۱۱ خرداد ۱۳۹۹

      سلام. این آموزش رو دنبال کنید :
      https://netparadis.com/generate-onetime-download-link-php

      پاسخ
  15. میثم ۴ اردیبهشت ۱۳۹۹

    سلام وقتتون بخیر
    من تو ربات تلگرام یه حلقه while دارم که پیام میفرستم باهاش به مخاطبام.الانکه مخاطبا زیاد شدن این حلقه میره رو تکرار یه جورایی بیرون نمیاد ازش .چجوری میتونم کرون جاب ست کنم که مثلا ۱۰۰ تا ۱۰۰ تا پیام بفرسته یا با فاصله ی زمانی مشخص بفرسته فشار رو هاست نیاد و قاطی نکنه

    پاسخ
    1. حسن شفیعی ۵ اردیبهشت ۱۳۹۹

      سلام. ممنون. یکه کانتر بزارید مثلا $count = 0 و داخل حلقه چک کنید به عدد موردنظر مثلا ۱۰۰ رسید از حلقه بیرون بشه.
      موفق باشید.

      پاسخ
  16. امیرحسین فضلی ۱۶ فروردین ۱۳۹۹

    سلام و خسته نباشید. من ربات تلگرام مینویسم. میخوام یک فایل installer بسازم که دیگه نیازی نباشه که عملیات نصب سورس به صورت دستی انجام بشه. فایل installer من باید به دیتابیس وصل بشه و یکسری جداولی رو ایجاد کنه. بعد یک کرون جاب ست کنه و در آخر هم ست وب هوک کنه. شما که cron tab گفتین من یکم قاطی کردم. و همچنین اون کانکشن و اینا رو هم که گفتین بیشتر قاطی کردم. خب کانکشن برای چی لازمه؟ راه بهتری برای من نیست؟

    پاسخ
    1. حسن شفیعی ۱۷ فروردین ۱۳۹۹

      سلام. ممنون.
      کانکشن برای اتصال به دیتابیس است. شما دفیقا همین موردی که گفتید را به راحتی میتونید در installer خودتون بنویسید و کاملا هم کار خواهد کرد.

      پاسخ
  17. دلارام ۲۴ دی ۱۳۹۸

    سلام جناب شفیعی
    من با php کار میکنم. میخوام یکسری مطالب از پایگاه داده به کانال تلگرام ارسال کنم که هر مطلب در زمان به خصوصی هست اما این اموزش یکم منو گیج کرده
    میشه یکم واضح تر راهنماییم کنین

    پاسخ
    1. حسن شفیعی ۲۴ دی ۱۳۹۸

      سلام. باید با بات نویسی آشنا باشید تا بتونید اینکار رو انجام بدید.
      کافیه فایل php مورد نظر رو تهیه کنید بعد با قابلیت کرون جاب خود پنل هاست بدون کدنویسی خاصی, عملیات دلخواهتون رو انجام بدید.
      موفق باشید.

      پاسخ
  18. حامد ۹ آبان ۱۳۹۸

    با سلام و خسته نباشید من هاست ویندوزی دارم و میخوام هر روز صبح از دیتابیس چک کنه و به کسایی که تولدشون هست sms تبریک بده ولی الان مشکلم اجرای خودکار برنامه هست، سؤال داشتم یکی اینکه کرون جاب روی هاست ویندوز کار می کنه یا نه و اینکه اگر نه برنامه جایگزین چه هست
    سپاسگزارم

    پاسخ
    1. حسن شفیعی ۹ آبان ۱۳۹۸

      سلام. ممنون.
      خب شما کل این عملیات رو که میخواید باید داخل یک فایل php کد بزنید که متصل به دیتابیس بشه و sms ارسال کنه و بعد آدرس این فایل رو داخل کرون جاب ب بازه زمانی دلخواه تعریف کنید تا در ساعات مشخص این فایل اجرا شود.
      در سرور ویندوزی هم باید همچنین دستوری روی
      C:\path\to\php\php.exe C:\path\to\cron.php
      را داخل برنامه schedule task ویندوز تعریف کنید تا با cmd اجرا شود.
      موفق باشید.

      پاسخ
    2. Saeeded ۱۰ آبان ۱۳۹۸

      ضمن تشکر از آقای شفیعی عزیز…
      من هم دقیقا مشکل آقای حامد رو دارم که در صفحه مربوط به Post – Get آقای شفیعی فرمودن که با استفاده از cronjob نمیشه متد های http رو استفاده کرد.
      مشکل اساسی اینه که وبسرویس پیامک ارائه شده توسط شرکت ها بیشتر متد های get , post رو قبول میکنن.
      میشه راهنمایی بفرمایید که شرکت ها برای ارسال پیامک برای مناسب های خاص بصورت اتوماتیک از چه روشی استفاده میکنن ؟؟

      پاسخ
      1. حسن شفیعی ۱۵ آبان ۱۳۹۸

        سلام. در این صورت باید یک سرور مجازی با دسترسی به شل داشته باشید تا بتونید مستقیما دستورات ترمینال یا همان بش را از طریق اسکریپت php اجرا کنید.
        موفق باشید.

        پاسخ
  19. سامان ۲۰ آذر ۱۳۹۷

    سلام . خسته نباشید . من با لاراول کار میکنم و دسترسی به سرور را هم در محیط سی پنل دارم . در لاراول دو تا فایل هست که به کران جاب مربوط میشه یکی فایل kernel.php ودیگری فایلی به اسم دلخواه مثلا cron.php که حاوی کاری است که میخواهیم بطور متناوب اجرا شود . در محیط سی پنل یک آیتمی داره به اسم cronJob که در ان میتوانیم دوره تناوب اجرای دستور و محل فایل cron.php را مشخص کنیم . آخرش کاری که توانستم بکنم این بود که کران جاب رو فعال کنم ولی نمیتونه فایل cron.php را درست اجرا کنه و میگه Class ‘Illuminate\Console\Command’ not found . این پیام در ایمیلی که بهم میده هستش . چند تا سوال برام پیش اومد اول اینکه چه نیازی به این فایل kernel.php هست ؟ ما در خط command اسمی از آن نمیبریم . دوم اینکه اگر اصلا میشه دستورات آرتیسان را در خود cpanel که رابط من با سرور هست اجرا کنم ؟ در اینصورت چه دستوری باید بدم که پیام خطای بالا را نده ؟ سوم اینکه در خط کامند اصولا دو مدل میشه نوشت یکی آدرس فایل cron.php را داد و دیگری دستور آرتیسان artisan schedule:run را داد . چه فرقی دارن اینا با هم .
    خیلی متشکر از لطفی که در پاسخ بدادن سوالات میکنید.

    پاسخ
    1. حسن شفیعی ۲۰ آذر ۱۳۹۷

      سلام. ممنون. متاسفانه با لاراول کار نکردم و از نحوه پیاده سازی این مورد در لاراول اطلاعی نداریم. میتونید با جستجوی خطاها در گوگل جواب سوال خود را پیدا کنید.
      موفق باشید.

      پاسخ
دوره های آموزشی