![](/img/trans.png)
[英]How to setup Codeingiter controller to run with a cron job using cpanel
[英]Cannot setup a cron job on Cpanel
尝试在Cpanel上添加cron作业以每5分钟运行一次。 我将此添加到命令输入中(从url中删除了个人详细信息)
/usr/bin/php -q /home/my_name/public_html/staging/the_web_site/wp-content/themes/my_child_theme/functions.php updateproducts
然后在functions.php
,我有这个:
if (!empty($argv[1])) {
switch ($argv[1]) {
case "updateproducts":
update_products();
break;
}
}
如果我通过管理页面上的按钮触发了update_products()
函数,则该函数将手动运行而不会出现任何错误。 但是,无论我在cronjob选项卡上做什么,它都不会运行。
任何想法?
function update_products() {
global $wpdb;
$groups = get_groups_from_cron_jobs(100);
foreach ( $groups as $group ) {
$name = $group->group_name;
$sql = $wpdb->prepare("SELECT * FROM {$wpdb->prefix}products WHERE name='%s'", $name);
$products = $wpdb->get_results($sql);
if ( !empty($products) ){
$post_id = get_post_id_from_products($products);
//if there isn't a parent_id then create a new product
if ( !$post_id && $name != '' ) {
$post_id = create_a_new_product($name);
}
// make sure that all products will have now a parent_id
add_parent_id_on_products($name, $post_id);
insert_product_attributes($post_id, $products);
insert_product_variations($post_id, $products);
delete_group_from_cron_jobs($name);
}
}
}
编辑:基于答案/评论,我进行了额外的研究,发现我可以在任何脚本上加载$ wpdb。 我所做的是:
if (!empty($argv[1])) {
switch ($argv[1]) {
case "updateproducts":
$path = $_SERVER['DOCUMENT_ROOT'];
require( $path . '/staging/the_web_site/wp-load.php' );
update_products();
break;
}
}
但是,我仍然在电子邮件中收到错误消息:
Status: 500 Internal Server Error
X-Powered-By: PHP/5.6.31
Content-type: text/html; charset=UTF-8
恐怕人们对Web环境和控制台环境之间的可互操作性存在一些误解。
简而言之,您的函数希望WordPress存在。 它期望用户已经通过WordPress应用程序访问了该函数,并且存在诸如$wpdb
类的全局变量(还有其他东西)。 如果您通过管理页面访问此功能,则说明一切正确,并且该功能有效。
但是,如果您通过控制台(命令行)访问此功能,则都不是真的。 在该请求的上下文中不存在WordPress。 global $wpdb
不存在,因为该功能尚未通过WordPress访问,而是通过直接命令访问。
如果要在命令行上使用此功能,则需要重写该功能才能在该环境中使用。 这意味着根本没有特定于WordPress的帮助程序或功能。
或者,您可以使用WordPress Crons
,这不是真正的Cron作业,而是在访问网站时(在其定义的时间范围内)运行。 因此,如果您有一个必须每五分钟运行一次的cron,但是您不会每隔几分钟可靠地拥有一个新访客,则这些将不满足您的需求,但是可以选择。
http://www.wpbeginner.com/plugins/how-to-view-and-control-wordpress-cron-jobs/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.