CRON command with Yii - php

I have a code that will automatic create a sitemap.xml . My Url look like this : http://example.com/sitemap
But now I want it to automatic run every minutes (just test) . I tried 2 way but none of them work :
first is call through URL ,ex:
*/1 * * * * wget http://example.com/sitemap
or
*/5 * * * * curl http://example.com/check
second is call throught php file , I'm using Yii so i'm not sure what the file .php is ? is this controller file or something else?
*/1 * * * * /usr/bin/php /home/domains/public_html/protected/modules/homepage/controller/HomepageController.php
my Sitemap action's code inside HomepageController.php

Use console command for running CRON calls. For example, create SitemapCommand.php (place it in protected/command/) with following code:
class SitemapCommand extends CConsoleCommand
{
public function actionGenerate($debug=0)
{
#generating of sitemap
}
}
Then add line like this, to your crontab file:
*/1 * * * * /usr/bin/php /home/domains/public_html/protected/yiic.php sitemap generate

You have to put something like this in your linux cron tab->
http://www.Yourwebstieaddress.com/index.php (use one spacebar) Controller_name (use one spacebar) function_name
it will definitely work

Related

Is it possible to use the same cron jobs for different subdirectories within the same domain name

I am working on a project in which I want to use the same cron job for different subdirectories within the same domain name like
www.abc.com/first
www.abc.com/second
www.abc.com/third
How can i do this can anyone please tell me?
Do some thing like this, this should run every 1 min for 3 website or sub directories . Note: It depends on your path.
* * * * * /usr/bin/php /www/virtual/username/first/cron.php > /dev/null 2>&1
* * * * * /usr/bin/php /www/virtual/username/second/cron.php > /dev/null 2>&1
* * * * * /usr/bin/php /www/virtual/username/third/cron.php > /dev/null 2>&
Let me know if you need more assistance.
Is mytrendin.com on the same Server as abc.com?

Symfony 4 .{_format} not working

so I've got this route
/**
* #Route("/user/{id}/diary.{_format}",
* defaults={"_format": "json"},
* requirements={
* "id": "\d+",
* "_format": "csv|json"
* }
* )
*/
public function showRaw(User $user, Request $request)
{
}
So when I acccess /user/1/diary it works with whatever I write in the function but when I try to access /user/1/diary.json or /user/1/diary.csv I get an 404 error, so I guess the route parameters are not matching properly.
I would like to, depending on what the format is, return a diferent response but until now I can't get the format.
Thanks in advance for your help.
I assume you are using PHP's built-in development server without an explicit routing script:
[saizferri:public]$ php -S localhost:5000
or:
[saizferri:symfony_project]$ php -S localhost:5000 -t public/
When run like this, PHP processes each request by looking in the current directory (or root given with -t) for the requested resource. If it isn't found and PHP thinks it is a file—as it did in the case of /user/1/diary.csv—PHP will return HTTP 404; otherwise, PHP will search for index.php or index.html, and, if either is found, it is served with $_SERVER["PATH_INFO"] set appropriately—this is why you were able to view /user/1/diary. (See the description in the manual.)
Instead, tell PHP to route all requests through public/index.php:
php -S localhost:<port> public/index.php

crontab not working in kohana freamwork

I'm using crontab to call my function.
but it is not working.
My function is working browser as well as in postman too.
====> MY FUNCTION
public function action_dateNotification() {
$sql = "INSERT INTO testcrown(name) VALUES('nitin')";
DB::query(Database::INSERT, $sql)->execute();
echo "inserted";
}
below url is working in browser and postman. When we invoke this url entry get save into database.
http://www.nkg.com/index.php/api/firebasenotification/dateNotification
I have set above url in crontab -e file
1 * * * * php index.php --uri=controller/api/firebasenotification/dateNotification
My project kohana version 3.1.3.1.
Use Kohana Task or:
1 * * * * wget http://example.com/controller/api/firebasenotification/dateNotification

How to set cron job URL for CodeIgniter?

I am using CodeIgniter for my website. I have to use cron job to run one of controller function. I am using route in website. And also I am not using index.php in URL.
e.g. http://example.com/welcome/show, here welcome is my controller and show is function name of that controller.
I have used like this,
0 * * * * php /home/username/public_html/welcome/show
It is giving 'No such directory'
How can I set cron jon in cPanel for above URL.
Use:
php index.php welcome show
as command in your crontab. E.g.:
0 * * * * php /home/username/index.php welcome show
Source (ver. 2.2.0)
http://www.codeigniter.com/userguide2/general/cli.html
Source (ver. 3.*)
http://www.codeigniter.com/user_guide/general/cli.html
Source (ver. 4.*)
http://codeigniter.com/user_guide/cli/cli.html
I have used below cron
php /full-path-to-cron-file/cron.php /test/index
source: http://www.asim.pk/2009/05/14/creating-and-installing-crontabs-using-codeigniter/
This works for me.
Thanks to all
You can try with this one:
wget api.example.com/index.php/controller/function
You can also try:
0 * * * * /usr/bin/curl --silent --compressed http://example.com/welcome/show
Or localhost
0 * * * * /usr/bin/curl --silent --compressed http://localhost/welcome/show
I hope that is helpful.
/usr/local/bin/php /home/username/public_html/index.php controllername methodname
This worked for me.
Here is the cron I use
/usr/bin/php /home/pia/www/jobs/index.php cron newsletter
Explanation:
a) $_SERVER['DOCUMENT_ROOT'] = /home/pia/www
b) codeigniter website root = /home/pia/www/jobs
c) 'cron' = controller name
d) 'newsletter' = method name
I have done it as
00 09-18 * * 1-5 /usr/bin/php /var/www/html/app/index.php crontest
crontest is the name of the controller which also uses a model to pull data from the database and send mail periodically (between 9 AM to 6 PM on Monday to Friday every week)
I just viewed this page which explains very detail with example. Hope this will be useful to others as well.
I am using codeigniter 3.0.3 and my server is hostgator. For me, the below format is working fine
*/15 * * * * /opt/php55/bin/php /home/username/public_html/myapp/index.php reminders index
above command runs every 15 minutes, reminders in command is controller name and index is method name.
watch -n60 curl [your application path]/check_banalce/user_balance
in my case im using codeigniter and the above command executes the user_balance function which is found in check_balance controller every 60 sec.
On a Linux EC2 intance, this worked:
*/5 * * * * /usr/bin/php /var/www/html/cifolder/index.php [module] [function]
If you are using the Hostgator(or any other Linux server) then try this one.
/opt/cpanel/ea-php72/root/usr/bin/php /YOUR_HOME_DIRECTORY/YOUR_USERNAME/public_html/marketing/index.php welcome emailcampaign 1
for example for me its
/opt/cpanel/ea-php72/root/usr/bin/php /home3/adnan/public_html/index.php welcome emailcampaign 101
where
welcome is the controller name
emailcampaign is the function name of welcome controller
101 = First argument of url.
Set up cron jobs through cPanel using this procedure:
Log on to your cPanel Interface.
Go to ''Advanced' section.
Click on "Cron Jobs".
Select the specific time from the lists provided.
You should enter the command to run in the "Command" field.
* * * * * php index.php controllername functionname
1st * - minute,
2nd * - hour,
3rd * - day of month,
4th * - month,
5th * - day of week.
For more info visit : https://crontab.guru/
I am using hostgator's cPanel.
I have created a user controller and run_cron_data function inside the user controller.
Command: wget www.example.com/index.php/user/run_cron_data
See the below screenshot
If you are using cPanel then Use the following command:
/usr/bin/curl -k http://example.com/welcome/show
This works perfectly for me.

How to add an URL to a cron job on my server?

What i'm trying to do is to execute an URL once every 5 minutes, it's for an update to the database:
so first i'm accessing the crontab:
crontab -e
then i add to the existing list this line:
5 * * * * /usr/bin/curl http://www.example.com/index.php/update
and i checked the DB after 5 minutes but there's no updating info.
What is that i'm doing wrong? did i skip a step without knowing?
Thanks in advance guys!
change 5 * * * * to */5 * * * * and it will run the cron job every 5 minutes
1 : Check /var/log/syslog where you can se if the cronjob actually had been executed (not nessecarily successfully)
2 : The url looks a litte bit weird to me
http://www.example.com/index.php/update
should maybe be (typo??)
http://www.example.com/index.php?update
3 : As Ryan Hurling mentions,
5 * * * * /usr/bin/curl http://www.example.com/index.php/update
guess it should be
*/05 * * * * /usr/bin/curl http://www.example.com/index.php/update
4 :
Tried
*/05 * * * * /usr/bin/wget curl http://www.example.com/index.php/update
??

Categories