从UNIX cron中的php调用函数

时间:2018-12-09 07:26:33

标签: php wordpress cron

我有一个wordpress网站。

我在以下目录中有一个php文件“ test.php”

/var/www/html/wp-content/themes/some_theme/parts/cron

test.php仅具有一个功能:

function cron_test(){
   error_log( print_r( "It works" ) ); //print to debug.log
};

我想要的:

我要使用sshcrontab -e添加一个cronjob来调用此函数。

我所做的事情:我尝试了不同的cron设置,以查看是否可行

*/2 * * * * /usr/bin/php /var/www/html/wp-content/themes/some_theme/parts/cron/test.php -f cron_test> /dev/null 2>&1
*/2 * * * * /usr/bin/php /var/www/html/wp-content/themes/some_theme/parts/cron/test.php cron_test> /dev/null 2>&1
*/2 * * * * /usr/bin/php /var/www/html/wp-content/themes/some_theme/parts/cron/test.php > /dev/null 2>&1
*/2 * * * * /usr/bin/php -q /var/www/html/wp-content/themes/some_theme/parts/cron/test.php cron_test> /dev/null 2>&1
*/2 * * * * /usr/bin/php -q /var/www/html/wp-content/themes/some_theme/parts/cron/test.php -f cron_test> /dev/null 2>&1
*/2 * * * * /usr/bin/php -q /var/www/html/wp-content/themes/some_theme/parts/cron/test.php /dev/null 2>&1

当然,它们都不起作用。

我想念什么?我将如何调用该函数?

谢谢!

2 个答案:

答案 0 :(得分:3)

  

@ user1597430您能给我一个例子吗?谢谢!

示例通话:php test.php init

示例代码:

<?php

switch ($argv[1])
{
    case 'init':
        cron_test();
}

function cron_test(){
   error_log( print_r( "It works" ) ); //print to debug.log
};

实际上,这是使用C语言的经典方式,如果您使用Google argv / argc,则可能会获得更多信息。

答案 1 :(得分:0)

几个月前,我遇到了这个问题。为了解决这个问题,我创建了一个简单的sh脚本来调用我的php页面,然后将该脚本调用到我的crontab中。

crontab:

40 22 * * * sh /.../updateAvai.sh /.../lastUpdateAvai.log

updateAvai.sh:

#! /bin/bash

php /.../genereListe.php

cat /.../liste | while read LINE
do
php /.../lineTask.php $LINE > /dev/null 2>&1
done

lineTask.php:

#!/usr/local/bin/php

<?php

...
// $argv[1] contains the first argument
echo " arg " . $argv[1] . " " . (new \DateTime())->format("Y-m-d H:m:s") . "\n";
...

?>

希望有帮助,

Luc。