如何在cron作业中设置时间间隔?

时间:2011-03-10 作者:Niraj Chauhan

我有一个非托管的VPS,我的wordpress站点位于这里,我还使用WP-ROBOT 3插件进行自动发布,我希望它通过cron作业进行自动发布,根据插件的文档,我通过SSH命令输入了此代码wget --post-data=\'mincamp=2&maxcamp=3&chance=50\' -O /dev/null http://myURL/ 它工作了,但我想设置定期间隔,这样它每天都会自动记账,怎么做?我想每6小时发布一次,cron命令应该是什么

1 个回复
最合适的回答,由SO网友:Patriek 整理而成

您可以通过wp\\u cron执行此操作,方法如下:,

function more_reccurences() {
return array(
    \'sixhourly\' => array(\'interval\' => 21600, \'display\' => \'Every 6 hours\'),
);
}
add_filter(\'cron_schedules\', \'more_reccurences\');
然后找到执行自动Post的函数并通过调用它

if ( !wp_next_scheduled(\'autopost_function\') ) {
wp_schedule_event(time(), \'sixhourly\', \'autopost_function\');
}
如果您想使用linux cron,应该是这样的:*6,12,18,24***/一些命令

-new edit: 28-3-2011

我认为这里的情况越来越复杂,让我澄清一下。这个*6、12、18、24***/某个命令进入您的crontab文件,该文件完全在您的Web服务器和wordpress之外。这cannot 在php中使用。

如果你想在wordpress中安排它,你需要我提供的功能。我对wp robot不是很熟悉,但我可以尝试提供帮助。wp robot是高级的,所以我无法检查代码。

我在顶部给出的代码每六个小时执行一次autopost函数。您需要自己编写autopost\\u函数,或者在wp robot中找到一个可以触发的函数。

我举几个例子:

ssh命令示例:

function autopost_function() {
$cmd = escapeshellcmd(\'wget --post-data=\'mincamp=2&maxcamp=3&chance=50\' -O /dev/null http://myURL/\');
  exec ($cmd);
}
请注意,考虑使用exec()very dangerous 在PHP中,如果操作不正确,整个服务器可能会受到破坏/黑客攻击,如果服务器在安全模式下运行,则可能无法正常运行。您可以尝试使用curl打开页面,这会更好,但您的服务器需要curl支持。

我将使用以下函数以编程方式添加帖子,而不是上述内容。但这与wp robot无关。

wp功能示例:

    function autopost_function() {
// Create post object
  $my_post = array(
     \'post_title\' => \'My post\',
     \'post_content\' => \'This is my post.\',
     \'post_status\' => \'publish\',
     \'post_author\' => 1,
     \'post_category\' => array(8,39)
  );

// Insert the post into the database
  wp_insert_post( $my_post );
}
此函数只需向数据库中添加一篇文章,您可以向其传递许多参数。有关详细信息,请在codex上查找wp\\u insert\\u post()。像这样做much safer, 而且更容易。

您可以在wp robot外部使用上述代码,因此不必更改核心文件。我写的所有示例都未经测试,因此它们可能包含一些语法问题。希望这有助于你继续前进。

结束

相关推荐

如何记录插件(Cron)操作?

是否有推荐的方法从插件中记录(失败的)cron操作?例如,我有一个插件,它每小时与外部服务同步一次。我想记录更改了多少,以及同步失败的时间。你有什么建议吗?新的数据库表?这个Log Deprecated Notices 插件使用自定义的帖子类型来实现这一点,但这可能会带来太多的开销?我相信WordPress does not come with a standard logging package?