serge Posted February 5, 2015 Report Posted February 5, 2015 Attached to this post, a poor man's cron script to check "health" of Blesta cron Basically it's check in Blesta log being in Blesta database & table log_cron what is the max of end_date when `run_id` ='0' run_id` ='0 in table log_cron is matching to such Blesta cron output: "Attempting to run all tasks for ? XXX-COMPANY ? XXX-COMPANY.. All tasks have been completed." so this cron script definite an acceptable last cron end_date ($Accepted_last_end_date) from time now, it's (timeNow -30mins) but you can change it as explained in bellow instruction, so if Blesta end_date in table log_cron was older(inferior) than this $Accepted_last_end_date, you will receive an email (by smtp), and no more email will be sent until Blesta cron back to normal (this to prevent you to received a lot of warning email in your email box....) ------------------- Require Pear & Pear Mail -( ever installed by default on most servers).in console, check if pear is there, type:pear version install on debian: ---------------------apt-get install php-pearlpear install mailpear install Net_SMTPpear install Auth_SASLpear install mail_mime ----------------optional, require php cli (php5-cli) , for testing & see echo messages.---------------Decompress zip archive and place "check_blesta_cron" dir at one level above of your public_html dir ,example, if you have path:/home/YOUR-USER/public_htmlplace "check_blesta_cron" dir here:/home/YOUR-USER/--------------Be aware that putting "check_blesta_cron" dir inside "public_html" is NOT SECURE.If you want to do it, for doing WEB CRON, create a directory protected by password.--------------1/ "open_custom_blesta_db_connection.php" file & at top from line 5 to 8: fill your Blesta database connection details2/ "CRON_check_blesta_cron.php" : - make time zone definited at line 7 be same as time zone chosen in Blesta admin area & menu: /settings/company/general/localization/ - check/fill from line 103 to 115 , with your email address & smtp parameters- for TESTING if the sending of email work, read test instruction at line 643/run "CRON_check_blesta_cron.php" :3a/- if you have console (command line access) use php CLI in console, to run test, type:cd /PATH-TO/check_blesta_cron/php CRON_check_blesta_cron.php4/ For create a recurrent run (cronjob)4a/- use crontab & in console, type (if your user is not root just change root to your-user):crontab -u root -eNext ad this line in crontab:*/15 * * * * php /PATH-TO/check_blesta_cron/CRON_check_blesta_cron.php OR 4b/ create the cron job using your server control panel menu N.B.: Depending of your OS, use: */15 * * * * php /PATH-TO/CRON_check_blesta_cron.php OR */15 * * * * /usr/bin/php /PATH-TO/CRON_check_blesta_cron.php-----------------------------------So the this cron will be runing every 15mins & will check that last Blesta's cron was not more old that 30mins from date-time-now.Please, read line 10 in CRON_check_blesta_cron.php if you want modify this value.When you are ready to use this script in PRODUCTION, Please read instruction at line 66 in CRON_check_blesta_cron.php file HAPPY CRON! check_blesta_cron.zip Michael, Blesta Addons, PauloV and 2 others 5 Quote
serge Posted February 6, 2015 Author Report Posted February 6, 2015 Thxs, I updated my above instruction at step 2/ , in case you are not using UTC time at your Blesta admin area & menu: /settings/company/general/localization/ There could be an improvement for later, in the condition the blesta cron is found "not ok", & after send the warning email, we could add some cleaning or check in the Blesta tables "log_cron" & "cron_task_runs", and followed by one webcron request, as it's seem the Blesta webcron or a manual cron request from blesta interface is able to restart "locked/frozen" cron process, if some "cleaning have been done before in the db or if the 6 hours from Blesta cron script have expired, I would prefer my script do also the cleaning VS waiting 6 hours. Quote
serge Posted February 6, 2015 Author Report Posted February 6, 2015 The 6 hours lock from Blesta can be found here,Line 1909 in : /app/controllers/cron.php :-----------if (strtotime($last_run->start_date) < strtotime(date("c") . "-6 hours"))---------so it's does make sense to lock still runing cron task, but what will be the chance they end if there are not done in a couple of mins, I think, even in case of hundred of thousand of operations that should never be very long ?6 hours is maybe excessive in my opinions, I will be more confortable with something like very max 1 hours or even 40 mins seem still to me very very fine. PauloV and LukesUbuntu 2 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.