Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用CodeIgniter CLI编写cron作业?_Php_Api_Codeigniter_Cron_Command Line Interface - Fatal编程技术网

Php 使用CodeIgniter CLI编写cron作业?

Php 使用CodeIgniter CLI编写cron作业?,php,api,codeigniter,cron,command-line-interface,Php,Api,Codeigniter,Cron,Command Line Interface,您好,我在使用cicli方式编写cron作业时遇到了一些问题。我的应用程序有一个名为manager.php的控制器名,其中有一个名为check\u status的方法,我将使用一个模型函数获取所有order\u id。曾经的订单id行在数据库中有一个状态字段,表示成功或失败 我有一个api,如果我将订单id传递给它,它将告诉我订单是否成功交付。但这里来了一个问题,我有下面的线在控制器在顶部 <?php if(! defined('BASEPATH') ) exit("NO Direct S

您好,我在使用
cicli
方式编写cron作业时遇到了一些问题。我的应用程序有一个名为
manager.php
的控制器名,其中有一个名为check\u status的方法,我将使用一个模型函数获取所有
order\u id
。曾经的订单id行在数据库中有一个状态字段,表示成功或失败

我有一个api,如果我将订单id传递给它,它将告诉我订单是否成功交付。但这里来了一个问题,我有下面的线在控制器在顶部

<?php if(! defined('BASEPATH') ) exit("NO Direct Script Access Allowed"); ?>
我以如下方式运行此控制器表单CLI
php应用程序/controller/cron_job.php消息

Note: I am in ROOT directory.
根本没有输出。所以我尝试了另一种方式,比如
php index.php应用程序/controller/cron_job.php消息

Note: I am in ROOT directory.
现在它给了我一个错误,说明未找到
错误404页。

我用另一种方式尝试的是,现在我在views文件夹中创建了一个文件,并在其中调用旧的控制器/方法url,如下所示

$result = file_get_contents("http://application_path/controller/method");

echo $result;
现在我得到了我在manager.php控制器中的check_status方法中定义的输出

但是在上面这一行之后,现在又出现了另一个问题,我将得到一个数组输出,它具有所有的order_id

我会将每个id发送到api以检查状态。如果失败,它将检查是否已交付。如果完成了,我需要根据该订单id更新数据库中的状态。但是现在我在视图文件中,是否可以从视图文件调用模型文件,或者是否有任何方法可以做到这一点

有什么帮助吗


注意:任何控制器或任何方法中都没有语法错误,当我使用URL访问时,这些控制器或方法经过充分验证并正常工作。

ci帮助程序将在这方面为您提供帮助

1)创建一个帮助器&在其中创建一个调用模型函数的函数

function getUserDetails($userId = '') {
  $CI = & get_instance(); 
  $getUserDetailsByUserId = $CI->user_model->getUserDetailsByUserId($userId);
  return $getUserDetailsByUserId;
}

2) 现在您可以调用
getUserDetails($userId)在您的视图中。

ci助手将在这方面帮助您

1)创建一个帮助器&在其中创建一个调用模型函数的函数

function getUserDetails($userId = '') {
  $CI = & get_instance(); 
  $getUserDetailsByUserId = $CI->user_model->getUserDetailsByUserId($userId);
  return $getUserDetailsByUserId;
}

2) 现在您可以调用
getUserDetails($userId)在您的视图中。

您需要阅读上的CodeIgniter帮助部分。这很容易。你最初的方法是正确的。但是,您不直接通过其路径调用控制器方法,而是将CD发送到项目根目录,然后使用控制器和方法作为参数调用index.php文件

// This is how you call CI via the command line.
// Use spaces between index.php and your arguments.
$ php index.php <controller> <method> [params]

// And in your instance
$ php index.php manager check_status [param1 param2 param3]
//这是通过命令行调用CI的方式。
//在index.php和参数之间使用空格。
$php index.php[params]
//以你为例
$php index.php管理器检查\u状态[param1 param2 param3]

根据您的主机,您可能需要调用为CLI编译的PHP版本。

您需要阅读上的CodeIgniter帮助部分。这很容易。你最初的方法是正确的。但是,您不直接通过其路径调用控制器方法,而是将CD发送到项目根目录,然后使用控制器和方法作为参数调用index.php文件

// This is how you call CI via the command line.
// Use spaces between index.php and your arguments.
$ php index.php <controller> <method> [params]

// And in your instance
$ php index.php manager check_status [param1 param2 param3]
//这是通过命令行调用CI的方式。
//在index.php和参数之间使用空格。
$php index.php[params]
//以你为例
$php index.php管理器检查\u状态[param1 param2 param3]

根据您的主机,您可能需要调用为CLI编译的PHP版本。

您好,现在我可以从api获取状态,现在我想使用该状态在数据库中更新它。我在视图中加载了帮助文件,如下$CI=&get_instance()$CI->load->helper('generic');然后在助手更新_状态($status)中有一个方法,所以在加载助手之后,我从我的视图文件调用这个方法,就像这个更新_状态($status)…但是什么都没有发生。在控制器中加载助手。很简单$此->加载->帮助程序('generic');并调用update_status($status);在视图中。您好,现在我可以从api获取状态,现在我想使用该状态在数据库中更新它。我在视图中加载了帮助文件,如下$CI=&get_instance()$CI->load->helper('generic');然后在助手更新_状态($status)中有一个方法,所以在加载助手之后,我从我的视图文件调用这个方法,就像这个更新_状态($status)…但是什么都没有发生。在控制器中加载助手。很简单$此->加载->帮助程序('generic');并调用update_status($status);在视野中。